首頁 >Java >java教程 >在 Java 中如何按值對 TreeMap 進行排序?

在 Java 中如何按值對 TreeMap 進行排序?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-21 16:16:12203瀏覽

How Can I Sort a TreeMap by its Values in Java?

按值對TreeMap 進行排序

簡介:

簡介:

解:

您無法直接依照 TreeMap 的數值對 TreeMap 進行排序。您嘗試使用 byValue 比較器的語法不正確。
static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
    SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<>(
        new Comparator<Map.Entry<K,V>>() {
            @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                int res = e1.getValue().compareTo(e2.getValue());
                return res != 0 ? res : 1;
            }
        }
    );
    sortedEntries.addAll(map.entrySet());
    return sortedEntries;
}

但是,您可以透過建立包含 TreeMap 項目的自訂 SortedSet 來實現所需的功能。這個SortedSet可以使用entriesSortedByValues()方法來建立:

此方法採用一個值為Comparable的Map,並且傳回一個按條目值排序的Map.Entry的SortedSet。
Map<String, Integer> map = new TreeMap<>();
map.put("A", 3);
map.put("B", 2);
map.put("C", 1); 

System.out.println(map); // prints "{A=3, B=2, C=1}"

SortedSet<Map.Entry<String,Integer>> sortedEntries = entriesSortedByValues(map);
System.out.println(sortedEntries); // prints "[C=1, B=2, A=3]"

使用此方法:

關於整數的注意事項相等:

使用== 比較整數值時,它檢查引用相等,而不是值相等。建議使用 equals() 方法來比較 Integer 值是否相等。

以上是在 Java 中如何按值對 TreeMap 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn