Я хочу карту, которая assignes RangeSets к Целые таким образом, что вместо того, чтобы:Есть ли способ иметь такую карту, как ArrayListMultimap, но с RangeSet и "coalescing" вместо этого?
Map<Integer, RangeSet> sensorIDsWithTimeRange = new HashMap<>();
if (sensorIDsWithTimeRange.containsKey(sensorId)) {
sensorIDsWithTimeRange.get(sensorId).add(Range.closedOpen(startTime, endTime));
} else {
RangeSet<Integer> rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closedOpen(startTime, endTime));
sensorIDsWithTimeRange.put(sensorId, rangeSet);
}
Я написал бы просто:
sensorIDsWithTimeRange.put(sensorId, Range.closedOpen(startTime, endTime));
И было бы создать новый ключ, если ключ уже не существует или вставьте новый диапазон в уже существующий RangeSet и скомбинируйте его, если ключ существует.
Так что мешает вам написания класс делает это? – Andreas
Если вы используете Java 8, вы можете просто написать 'sensorIDsWithTimeRange.computeIfAbsent (sensorId, k -> TreeRangeSet.create()). Add (range)'; –