如何在Java中对哈希图进行排序

2022-08-31 08:44:36

我们如何对 ?HashMap<key, ArrayList>

我想根据 .ArrayList


答案 1

你必须使用哈希地图吗?如果只需要地图界面,请使用树状图


如果要通过比较哈希映射中的值进行排序。您必须编写代码才能执行此操作,如果要执行此操作,则可以对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>>


答案 2

按 hasmap 键排序的列表:

SortedSet<String> keys = new TreeSet<String>(myHashMap.keySet());

按哈希映射值排序的列表:

SortedSet<String> values = new TreeSet<String>(myHashMap.values());

如果映射值重复:

List<String> mapValues = new ArrayList<String>(myHashMap.values());
Collections.sort(mapValues);

祝你好运!


推荐