我们经常使用 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 中,就可以排好序了。例子下回再讲。