Java Map:反向时间顺序

时间:2011-10-14 22:59:17

标签: java map iteration comparator

我有以下函数,它应该返回一个日期映射到longs,以便按逆时间顺序迭代这些条目。

countsLinkedHashMap,因此条目按插入顺序存储(在这种情况下按时间顺序排列):

public Map<Date, Long> getCountsChronological() {
   Map<Date, Long> chronologicalMap =
     new TreeMap<Date, Long>(Collections.reverseOrder());
   chronologicalMap.putAll(counts);
   return chronologicalMap;
}

虽然从理论上讲,这个功能不起作用,但它应该是。当我遍历它返回的地图时,我仍然按时间顺序获取条目。

1 个答案:

答案 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;
    }
}

你确定你没有迭代原始地图而不是返回的地图吗?