这是一个非常基本的问题,我对Java不太好。我有一个地图,我想获得一个列表或按排序顺序的关键字,所以我可以遍历它们。如何对Java中Map的键进行排序?
44
A
回答
68
使用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());
}
如果你与你喜欢的未分类其他Map实现工作,你可以将它传递给TreeMap
的constructor创建具有排序键新的地图。
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. */
...
}
一个TreeMap
工作与实现Comparable
接口,把他们在“自然”为了任何类型的密钥。对于不是Comparable
的密钥,或者其自然顺序不是您所需的密钥,您可以实施自己的Comparator
,并在constructor中指定该密钥。
28
你有几个选择。列在优先级顺序:
- 使用
SortedMap
:
SortedMap<whatever> myNewMap = new TreeMap<whatever>(myOldMap);
如果你想重复一次以上这远远优于。它保持键的排序,所以你不必在迭代之前对它们排序。 - 没有#2。
- 也没有#3。
SortedSet<whatever> keys = new TreeSet<whatever>(myMap.keySet());
List<whatever> keys = new ArrayList<whatever>(myMap.keySet()); Collections.sort(keys);
最后两个会得到你想要的东西,但只能使用,如果你只是想重复一次,然后忘记整个事情。
8
您可以在迭代时创建一个排序后的集合,但首先要有一个排序映射更有意义。 (如已经建议)
所有相同的,这里是你如何做到这一点。
Map<String, Object> map;
for(String key: new TreeSet<String>(map.keySet()) {
// accessed in sorted order.
}
相关问题
- 1. 在mapreduce中对map函数中的键值对进行排序
- 2. Java PriorityList,如何对它进行排序?
- 3. Java如何对multimap进行排序vs?
- 4. 我们如何使用SortedMap接口来对Map进行排序?
- 5. 如何按值列表对Map进行排序?
- 6. 如何用java中的对象对链表进行排序
- 7. 如何从java中的命令行对姓氏进行排序
- 8. Java:对地图进行排序,根据内部地图对<Long,Map <String,Data >>进行排序
- 9. 如何使用C#中的键对NameValueCollection进行排序?
- 10. 如何通过Scala中的键对字典进行排序?
- 11. 如何通过PHP中的键对数组进行排序?
- 12. 如何有效地对类对象的键(ksort)进行排序?
- 13. 如何根据键对我的JSON对象进行排序?
- 14. 如何对Java中ArrayList中的某些项目进行排序?
- 15. 如何在java中对arraylist中的元素进行排序?
- 16. std :: map - 如何更改键排序?
- 17. 如何在java中对对象进行排序?
- 18. 如何在Java中对对象数组进行排序
- 19. 如何在Java中对JSON对象进行排序?
- 20. 在Java中对ArrayList进行排序
- 21. 在java中对JSONArray进行排序
- 22. 如何基于两个键值对数组键进行排序?
- 23. 根据关键字进行Java排序
- 24. 如何使用js中的键的值以升序对对象进行排序?
- 25. 如何对java中的字母数字字符进行排序?
- 26. 如何基于java中的多个值对JsonArray进行排序?
- 27. 如何使用java 8中的reduce对列表进行排序?
- 28. Java中的PriorityQueue如何对重复条目进行排序?
- 29. 如何对java中的MAC地址列表进行排序?
- 30. 如何使用.stream()对java8中的<Map <String,Object >>进行排序?
我正在使用的代码给了我一个Map对象,那么如何将其转换为TreeMap或使用TreeMap进行排序呢? – Bialecki 2009-02-20 22:03:06
您可以使用其参数为任何Map的构造函数来创建TreeMap。另外,恭喜埃里克森(我认为,因为你距离10k只有5代表)。 – 2009-02-20 22:05:13