網頁

2020/4/7

Java Map sorting 排序

Java的Map的排序方式如下。

如果要保證Map中的元素順序,不能使用HashMap,因為不保證元素的排序不變。

改用LinkedHashMapTreeMap

LinkedHashMap的排序方式為元素放入的順序。

TreeMap是以key做排序,因此key必須能比較,可實作Comparable介面或傳入Comparator的實作。

// 不保證順序不變
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(5, "e");
hashMap.put(2, "b");
hashMap.put(4, "d");
hashMap.put(3, "c");
hashMap.put(1, "a");
System.out.println(hashMap); // {1=a, 2=b, 3=c, 4=d, 5=e}

// 依加入順序排序
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>(); // 依插入順序排愈
linkedHashMap.put(5, "e");
linkedHashMap.put(2, "b");
linkedHashMap.put(4, "d");
linkedHashMap.put(3, "c");
linkedHashMap.put(1, "a");
System.out.println(linkedHashMap); // {5=e, 2=b, 4=d, 3=c, 1=a}

// 以key排序
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(5, "e");
treeMap.put(2, "b");
treeMap.put(4, "d");
treeMap.put(3, "c");
treeMap.put(1, "a");

System.out.println(treeMap); // {1=a, 2=b, 3=c, 4=d, 5=e}

沒有留言:

張貼留言