Java 如何根据日期对HashMap进行排序?
我正在尝试根据关键字中的日期对该HashMap进行排序 我的哈希映射:Java 如何根据日期对HashMap进行排序?,java,sorting,hashmap,date-sorting,Java,Sorting,Hashmap,Date Sorting,我正在尝试根据关键字中的日期对该HashMap进行排序 我的哈希映射: Map m=newhashmap()使用a代替。正如已经实现的那样,它将在插入时自动排序 Map<Date, ArrayList> m = new TreeMap<Date, ArrayList>(); 另见: 使用TreeMap而不是HashMap来存储数据,数据将自动排序。欢迎使用堆栈溢出!只是好奇,你为什么重复已经给出的答案?这不是一个“讨论论坛”,人们通常会通过重复或其他方式来确认答案
Map m=newhashmap()代码>使用a代替。正如已经实现的那样,它将在插入时自动排序
Map<Date, ArrayList> m = new TreeMap<Date, ArrayList>();
另见:
使用TreeMap而不是HashMap来存储数据,数据将自动排序。欢迎使用堆栈溢出!只是好奇,你为什么重复已经给出的答案?这不是一个“讨论论坛”,人们通常会通过重复或其他方式来确认答案。在一个问答网站上,你只需投票或发布一个更好的答案。另请参见。是的,我知道了。我会做得更好。#winces#如果您没有以不变的方式使用这些Date
s,我会小心尝试在多线程环境中使用它-调用任何对象get()
方法实际上会改变它所持有的值,因此实际值取决于set()
s和get()
s。我宁愿相信JodaTime库…如果我实现日期排序,上面的方法将根据一年的第一天对它们进行排序。虽然我希望基于当前日期进行排序,但我必须实现一个比较器。有标题吗?@Pirate:它是根据时间戳排序的(可通过Date\getTime()
获得),而不是在一年的第一天。更重要的是,java.util.Date
没有“一年中的第一天”这样的概念。你的问题是由别的地方引起的。也许Date
用作键的实例是通过java.util.Calendar
创建的,而java.util.Calendar确实有“一年中的第一天”的概念。只要按下右上角的“提问”按钮和一个SSCCE就可以得到答案。你是说它是根据当前日期排序的吗?@Pirate:它是根据时间戳排序的,而不是你暗示的每年的第一天。因此,它不是例如2012年1月1日、2013年1月1日、2012年1月2日、2013年1月2日,而是2012年1月1日、2012年1月2日、2013年1月1日、2013年1月2日。这意味着我不必实现比较器,但由于这些日期值存储为键,它们是否需要唯一?我即将发现这一切,写一篇SSCCE。
Map<Date, ArrayList> sortedMap = new TreeMap<Date, ArrayList>(m);