我有以下函数,它应该返回一个日期映射到longs,以便按逆时间顺序迭代这些条目。
counts
是LinkedHashMap
,因此条目按插入顺序存储(在这种情况下按时间顺序排列):
public Map<Date, Long> getCountsChronological() {
Map<Date, Long> chronologicalMap =
new TreeMap<Date, Long>(Collections.reverseOrder());
chronologicalMap.putAll(counts);
return chronologicalMap;
}
虽然从理论上讲,这个功能不起作用,但它应该是。当我遍历它返回的地图时,我仍然按时间顺序获取条目。
答案 0 :(得分:2)
无法复制 - 对我来说很好:
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<Date, Long> map = new HashMap<Date, Long>();
map.put(new Date(100), 100L);
map.put(new Date(400), 400L);
map.put(new Date(300), 300L);
map.put(new Date(200), 200L);
map = reverseChronological(map);
for (Map.Entry<Date, Long> entry : map.entrySet()) {
System.out.println(entry.getKey().getTime());
}
}
public static Map<Date, Long> reverseChronological(Map<Date, Long> input) {
Map<Date, Long> chronologicalMap =
new TreeMap<Date, Long>(Collections.reverseOrder());
chronologicalMap.putAll(input);
return chronologicalMap;
}
}
你确定你没有迭代原始地图而不是返回的地图吗?