Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengisih Peta Pokok mengikut Nilainya di Jawa?

Bagaimanakah Saya Boleh Mengisih Peta Pokok mengikut Nilainya di Jawa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 16:16:12203semak imbas

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

Mengisih Peta Pokok mengikut Nilai

Pengenalan:

Dalam TreeMap, elemen diisih berdasarkan susunan semula jadi mereka, yang boleh menjadi kunci atau nilai, bergantung pada pelaksanaan. Walau bagaimanapun, adalah mungkin untuk mengisih TreeMap berdasarkan nilai entrinya menggunakan pembanding.

Penyelesaian:

Anda tidak boleh mengisih TreeMap secara langsung mengikut nilainya. Sintaks yang anda cuba dengan pembanding byValue adalah tidak betul.

Walau bagaimanapun, anda boleh mencapai kefungsian yang diingini dengan mencipta SortedSet tersuai yang mengandungi entri TreeMap. SortedSet ini boleh dibuat menggunakan kaedah entriSortedByValues():

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;
}

Kaedah ini mengambil Peta yang nilainya Sebanding dan mengembalikan Set Sorted Map.Entry yang diisih mengikut nilai entri.

Untuk menggunakan ini kaedah:

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]"

Nota tentang Kesamaan Integer:

Apabila membandingkan nilai Integer menggunakan ==, ia menyemak kesamaan rujukan, bukan kesamaan nilai. Adalah disyorkan untuk menggunakan kaedah equals() untuk membandingkan nilai Integer untuk kesamaan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisih Peta Pokok mengikut Nilainya di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn