Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menyusun HashMap di Java Berdasarkan Nilai atau Kuncinya?
Mengisih HashMap dalam Java
Di Java, tidak mungkin untuk mengisih HashMap secara langsung kerana ia mengekalkan struktur dalaman yang mengoptimumkan akses kepada pasangan nilai kunci berdasarkan kod cincang. Walau bagaimanapun, terdapat teknik untuk mencapai pengisihan berdasarkan nilai dalam HashMap.
Isih dengan membandingkan nilai
Satu pendekatan ialah menukar nilai HashMap ke dalam senarai dan mengisih senarai berdasarkan perbandingan yang dikehendaki. Kaedah ini membenarkan kriteria pengisihan yang fleksibel kerana pembanding tersuai boleh digunakan. Contohnya, untuk mengisih HashMap dengan nilai adalah objek Person berdasarkan umur mereka:
Map<String, Person> people = new HashMap<>(); ... // Convert HashMap values to a list List<Person> peopleByAge = new ArrayList<>(people.values()); // Sort the list using a comparator Collections.sort(peopleByAge, Comparator.comparing(Person::getAge)); // Print sorted results for (Person p : peopleByAge) { System.out.println(p.getName() + "\t" + p.getAge()); }
Menggunakan TreeMap
Jika kriteria pengisihan tidak khusus untuk nilai melainkan susunan kekunci yang dimasukkan, TreeMap boleh digunakan dan bukannya HashMap. TreeMap mengekalkan koleksi kunci yang disusun secara semula jadi, jadi elemen diambil dalam tertib menaik secara lalai. Untuk melaksanakan penyelesaian ini, gantikan HashMap dalam coretan kod di atas dengan TreeMap.
Pertimbangan
Bergantung pada kes penggunaan, pilihan antara mengisih nilai HashMap atau menggunakan TreeMap mungkin berbeza-beza. Jika pengisihan dengan membandingkan nilai diperlukan, pendekatan pertama adalah lebih sesuai. Jika mengisih mengikut kekunci dalam tertib menaik sudah mencukupi, TreeMap ialah pilihan yang lebih mudah dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun HashMap di Java Berdasarkan Nilai atau Kuncinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!