2011-11-18 63 views
0

我有一个TreeMap,其中包含给定年份的所有日期,因为每个项的键和值都是46.现在用户提供开始日期和结束日期。我想检查地图中的开始日期和结束日期以及中间范围的容量(即每个日期的值,即46)。如何才能做到这一点?Java将Arraylist中的项目与TreeMap中的项目进行比较

我可以创建一个日期范围的数组列表,我想也许在同一时间遍历两个结构(数组列表和树状图),并比较项目将工作。但不知道。你怎么看?

回答

2

可导航地图(例如树图)可以通过其subMap(fromKey, toKey)方法为您提供一系列按键的地图。

所以这应该为你工作:

TreeMap<Date, Integer> map = ...; 
int minCapacity = Integer.MAX_VALUE; 
int maxCapacity = Integer.MIN_VALUE; 
for (Integer capacity : map.subMap(fromDate, toDate).entrySet()) { 
    minCapacity = Math.min(minCapacity, capacity); 
    maxCapacity = Math.max(maxCapacity, capacity); 
} 
+0

我真不明白什么mincapacity和MAXCAPACITY是谁?因此我无法理解每一个。 另一件事是:一旦我可以检查容量,那么我想反映主图中的变化,而不是子...这是怎么完成的? –

+0

http://www.java-examples.com/get-sub-map-java-treemap-example 这回答了变化的反思...所以你只是不清楚关于mincap和maxcap –

+0

我不明白原来的问题,但关于这个例子,我会使用NavigableMap.subMap(),而不是SortedMap.subMap()。 NavigableMap方法允许指定是否需要包含/排除第一个/最后一个元素。 – Alexandr

相关问题