java - 如何在 Java 中对 HashMap 进行排序

标签 java sorting hashmap

我们如何对 HashMap<key, ArrayList> 进行排序?

我想根据 ArrayList 中的值进行排序.

最佳答案

必须使用HashMap吗?如果您只需要 map 界面,请使用 TreeMap

<小时/>

如果你想通过比较HashMap中的值来排序。如果您想在对 HashMap 的值进行排序后执行此操作,则必须编写代码来执行此操作:

Map<String, Person> people = new HashMap<>();
Person jim = new Person("Jim", 25);
Person scott = new Person("Scott", 28);
Person anna = new Person("Anna", 23);

people.put(jim.getName(), jim);
people.put(scott.getName(), scott);
people.put(anna.getName(), anna);

// not yet sorted
List<Person> peopleByAge = new ArrayList<>(people.values());

Collections.sort(peopleByAge, Comparator.comparing(Person::getAge));

for (Person p : peopleByAge) {
    System.out.println(p.getName() + "\t" + p.getAge());
}

如果您想经常访问此排序列表,那么您可以将元素插入 HashMap<TreeSet<Person>> ,尽管集合和列表的语义有点不同。

关于java - 如何在 Java 中对 HashMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358757/

相关文章:

java - Android应用程序代码中的"%02d"

java - 看似简单的 FNV1 哈希实现导致大量冲突

java - 叶证书和子证书的用途是什么以及如何使用它们?

algorithm - 大 O 和时间复杂度

c - 快速排序算法给出段错误

java - Java ArrayList 支持稀疏索引吗?

java - 方法 getOrDefault(String, String) 未定义类型 Map<String,String>

python - python中多维搜索的最佳算法

java - HashMap.containsKey() 返回 false。为什么?

java优先级队列没有根据hashmap的频率获得正确的顺序