我有一个问题
HashMap<String, List<AppPrjMilestone>> dateMilestoneMap
= new HashMap<String, List<AppPrjMilestone>>();
我将动态键放入 Hashmap 对象中,如下所示:
dateMilestoneMap.put(""+crateDate,value);
最后我得到这样的结果:
("28/01/2012",value)
("01/01/2012",value)
("26/01/2012",value)
我想要按降序或升序返回键值对。我怎样才能做到这一点?
HashMap 不根据定义存储键的排序顺序。但是,您可以通过以下方式获取键数组来实现此目的:Object[] keys = map.keySet().toArray();
然后用数组对列表进行排序:Arrays.sort(keys);
最后遍历每个键并从 HashMap 中检索值。
for(Object key : keys) {
System.out.println(map.get(key));
}
这里的排序步骤将使算法以 O(n lg n) 运行,而不是使用排序数据结构可能的 O(n) 运行。
这将按字典顺序对列表进行排序。由于您的问题看起来使用常见的美国日期格式,因此这将按日、然后是月、最后是年对列表进行排序。这可能不正确。您可以使用日期的年月日字符串格式,也可以采用更合适的键对象。 Joda-Time 的 DateTime 和 DateTimeComparator 会非常有用。调用时只需使用 DateTime 作为键和 DateTimeComparator 实例Arrays.sort(keys, comparator);
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)