0%

java中如何对Map中的元素进行排序

我们经常使用 HashMap, 但有时候需要根据 key 进行排序。

通过 Collections.sort()

Map 的 key 是字符串类型的,需要先把字符串转成数字型。使用 reversed() 方法可以让序列倒序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MapSortDemo {

public static void main(String[] args) {

Map<String, String> map = new HashMap<>();
map.put("1", "A");
map.put("3", "C");
map.put("2", "B");
map.put("10", "G");
map.put("11", "H");

List<Map.Entry<String, String>> entries = new ArrayList<>(map.entrySet());
System.out.println(entries);

Collections.sort(entries, Comparator.comparing((Map.Entry<String, String> entry) -> Integer.parseInt(entry.getKey())));
System.out.println(entries);

Collections.sort(entries, Comparator.comparing((Map.Entry<String, String> entry) -> Integer.parseInt(entry.getKey())).reversed());
System.out.println(entries);
}
}

通过 TreeSet 方式

遍历 HashMap 中所有元素,放入 TreeSet 中,就可以排好序了。例子下回再讲。