当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中对Map的键进行排序?

如何解决《如何在Java中对Map的键进行排序?》经验,为你挑选了3个好方法。

这是一个非常基本的问题,我对Java不太满意.我有一个Map,我想按排序顺序得到一个列表或一些键,所以我可以迭代它们.



1> erickson..:

使用a TreeMap,这是SortedMap接口的实现.它按排序顺序显示其键.

Map map = new TreeMap();
/* Add entries to the map in any order. */
...
/* Now, iterate over the map's contents, sorted by key. */
for (Map.Entry entry : map.entrySet()) {
  System.out.println(entry.getKey() + ": " + entry.getValue());
}

如果你与你喜欢的未分类其他Map实现工作,你可以将它传递给构造函数的TreeMap建立与排序键新的地图.

void process(Map original) {
  Map copy = new TreeMap(original);
  /* Now use "copy", which will have keys in sorted order. */
  ... 
}

A TreeMap可以使用任何类型的密钥来实现Comparable接口,将它们置于"自然"顺序中.对于不是Comparable或者其自然排序不是您需要的键,您可以实现自己的键Comparator并在构造函数中指定它.



2> Michael Myer..:

你有几个选择.按优先顺序列出:

    使用SortedMap:
    SortedMap myNewMap = new TreeMap(myOldMap);
    如果你想多次迭代,这是非常可取的.它使键保持排序,因此您无需在迭代之前对它们进行排序.

    没有#2.

    也没有#3.

    SortedSet keys = new TreeSet(myMap.keySet());

    List keys = new ArrayList(myMap.keySet()); Collections.sort(keys);

最后两个将为您提供您想要的,但只有在您只想迭代一次然后忘记整个事情时才应该使用.



3> Peter Lawrey..:

您可以在迭代时创建已排序的集合,但首先有一个排序的映射更有意义.(正如已经建议的那样)

同样,这是你如何做到这一点.

Map map;
for(String key: new TreeSet(map.keySet()) {
  // accessed in sorted order.
}

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有