eri*_*son 77
使用a TreeMap,这是SortedMap接口的实现.它按排序顺序显示其键.
Map<String, Object> map = new TreeMap<String, Object>();
/* Add entries to the map in any order. */
...
/* Now, iterate over the map's contents, sorted by key. */
for (Map.Entry<String, ?> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)
如果你与你喜欢的未分类其他Map实现工作,你可以将它传递给构造函数的TreeMap建立与排序键新的地图.
void process(Map<String, Object> original) {
Map<String, Object> copy = new TreeMap<String, Object>(original);
/* Now use "copy", which will have keys in sorted order. */
...
}
Run Code Online (Sandbox Code Playgroud)
A TreeMap可以使用任何类型的密钥来实现Comparable接口,将它们置于"自然"顺序中.对于不是Comparable或者其自然排序不是您需要的键,您可以实现自己的键Comparator并在构造函数中指定它.
Mic*_*ers 35
你有几个选择.按优先顺序列出:
SortedMap:SortedMap<whatever> myNewMap = new TreeMap<whatever>(myOldMap);SortedSet<whatever> keys = new TreeSet<whatever>(myMap.keySet());List<whatever> keys = new ArrayList<whatever>(myMap.keySet());
Collections.sort(keys); 最后两个将为您提供您想要的,但只有在您只想迭代一次然后忘记整个事情时才应该使用.
您可以在迭代时创建已排序的集合,但首先有一个排序的映射更有意义.(正如已经建议的那样)
同样,这是你如何做到这一点.
Map<String, Object> map;
for(String key: new TreeSet<String>(map.keySet()) {
// accessed in sorted order.
}
Run Code Online (Sandbox Code Playgroud)
除了其他答案中提到的方法之外,对于 Java 8 流,从地图中获取排序键列表的另一种速记是 -
List<T> sortedKeys = myMap.keySet().stream().sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
实际上也可以在之后完成一些事情.sorted()(例如使用 a.map(...)或 a .forEach(...)),而不是将其收集在列表中然后遍历列表。
| 归档时间: |
|
| 查看次数: |
73363 次 |
| 最近记录: |