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
Lepaskan: 2024-12-21 16:16:12
asal
206 orang telah melayarinya

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;
}
Salin selepas log masuk

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]"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan