Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Isih Nilai Peta Java mengikut Kekuncinya?

Bagaimanakah Saya Boleh Isih Nilai Peta Java mengikut Kekuncinya?

Barbara Streisand
Barbara Streisandasal
2024-12-30 12:15:14732semak imbas

How Can I Sort a Java Map's Values by its Keys?

Isih Nilai Peta mengikut Kunci dalam Java

Memandangkan Peta dengan kekunci dan nilai Rentetan, objektifnya adalah untuk mengisih kekunci dalam tertib menaik. Kekunci yang diisih kemudiannya akan digunakan untuk mencipta dua rentetan: satu mengandungi soalan yang diisih dan satu lagi mengandungi jawapan yang sepadan.

Jawapan Ringkas

Untuk mengisih Peta mengikut kekuncinya, gunakan TreeMap , yang direka khusus untuk tujuan ini. Jika jenis Peta tidak diketahui, kaedah alternatif menggunakan SortedSet dan TreeSet boleh digunakan:

SortedSet<String> keys = new TreeSet<>(map.keySet());
for (String key : keys) {
    String value = map.get(key);
    // Perform desired operations
}

Jawapan Lebih Panjang

Secara teknikal, mana-mana kelas yang melaksanakan SortedMap boleh digunakan. Walau bagaimanapun, TreeMap adalah pilihan yang paling lazim. Untuk jenis kunci yang lebih kompleks atau keperluan pengisihan tersuai, gunakan pembina berikut untuk menyediakan Pembanding:

Comparator<Foo> comparator = (Foo o1, Foo o2) -> {
    // Define custom sort logic
};

SortedSet<Foo> keys = new TreeSet<>(comparator);
keys.addAll(map.keySet());

Pertimbangan Prestasi:

Perhatikan bahawa TreeMap dan TreeSet mempunyai perbezaan ciri prestasi berbanding HashMap dan HashSet. Operasi carian, yang mengambil masa O(1) dalam HashMap, memerlukan masa O(Log(N)) dalam TreeMap. Apabila saiz peta bertambah, masa carian akan meningkat pada masa yang sama.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Nilai Peta Java mengikut Kekuncinya?. 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