【问题标题】:Java Map: Reverse chronological orderJava Map:时间倒序
【发布时间】:2011-12-08 03:14:02
【问题描述】:

我有以下函数,它应该将日期映射返回为 long,以便您按时间倒序遍历条目。

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

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

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

【问题讨论】:

  • 出现了吗?一个简短但完整的示例将非常非常有帮助。请注意,counts 条目出现的顺序无关紧要。
  • 好的,我稍微编辑了一下问题。
  • 查看我的答案以获得一个简短但完整的程序,它表明它可以工作。你能想出一个类似的 failing 吗?

标签: java map iteration comparator


【解决方案1】:

无法重现 - 对我来说很好:

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

你确定你不是在迭代 original 地图而不是返回的地图吗?

【讨论】:

  • 是的,它也适用于我!原来我被我正在填充的表格中的标题愚弄了。作为标题的日期列表没有被颠倒,所以我的印象是计数列表也没有被颠倒。它一直有效..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2023-03-11
  • 2015-03-16
  • 2013-09-26
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多