Isih Peta Hash mengikut Nilai
Di Java, struktur data HashMap menyediakan cara yang mudah untuk menyimpan pasangan nilai kunci. Walau bagaimanapun, jika anda perlu mengakses data berdasarkan nilai yang dikaitkan dengan kekunci, menyusun HashMap mengikut nilai adalah perlu.
Isih Peta Hash dalam Susunan Menaik
Satu pendekatan untuk mengisih HashMap mengikut nilai ialah menggunakan aliran Java 8. Coretan kod berikut menunjukkan cara melakukan ini dalam tertib menaik:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in ascending order Map<Integer, String> sortedMapAsc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 2, abby // Key, Value : 5, daisy // Key, Value : 3, denver // Key, Value : 4, frost // Key, Value : 1, froyo System.out.println(sortedMapAsc); } }
Mengisih Peta Hash dalam Susunan Menurun
Untuk mengisih Peta Hash mengikut nilai dalam tertib menurun, ubah suai sedikit coretan kod di atas:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in descending order Map<Integer, String> sortedMapDesc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.<Integer, String>comparingByValue().reversed()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 1, froyo // Key, Value : 4, frost // Key, Value : 3, denver // Key, Value : 5, daisy // Key, Value : 2, abby System.out.println(sortedMapDesc); } }
Kod ini akan keluarkan HashMap yang diisih dengan kekunci yang mewakili kunci asal dan nilai yang diisih dalam tertib menurun. Kedua-dua contoh tertib menaik dan menurun menggunakan LinkedHashMap untuk mengekalkan susunan sisipan, memastikan kekunci dikaitkan dengan betul dengan nilai yang diisih.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Java HashMap mengikut Nilai dalam Susunan Menaik dan Menurun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!