如何在Java中对Map的键进行排序?
问题内容:
这是一个非常基本的问题,我对Java并不是很好。我有一个Map,我想按排序顺序获取列表或某些键,以便可以对其进行迭代。
问题答案:
使用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
以使用排序键创建新的Map。
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
并在构造函数中指定该键。