我有一个问题
HashMap<String, List<AppPrjMilestone>> dateMilestoneMap
= new HashMap<String, List<AppPrjMilestone>>();
Run Code Online (Sandbox Code Playgroud)
我将动态键放在Hashmap对象中,如下所示:
dateMilestoneMap.put(""+crateDate,value);
Run Code Online (Sandbox Code Playgroud)
最后我得到这样的结果:
("28/01/2012",value)
("01/01/2012",value)
("26/01/2012",value)
Run Code Online (Sandbox Code Playgroud)
我希望以desc或asc顺序返回键值对.我怎样才能做到这一点?
all*_*eek 25
根据定义,HashMaps不存储键的排序顺序.但是,您可以通过以下方式获取键的数组来实现此目的:Object[] keys = map.keySet().toArray();然后使用Arrays对列表进行排序: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);.
| 归档时间: |
|
| 查看次数: |
48038 次 |
| 最近记录: |