按值對 HashMap 進行排序
在 Java 中,HashMap 資料結構提供了一種便捷的方式來儲存鍵值對。但是,如果您需要根據與鍵關聯的值來存取數據,則需要按值對 HashMap 進行排序。
按升序對 HashMap 進行排序
按值對 HashMap 進行排序的一種方法是使用 Java 8 流。以下程式碼片段示範如何按升序執行此操作:
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); } }
按降序對HashMap 進行排序
要按值降序對HashMap 進行排序,稍微修改一下上面的程式碼片段:
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); } }
這段程式碼將輸出排序後的HashMap鍵表示按降序排序的原始鍵和值。升序和降序範例都使用 LinkedHashMap 來維護插入順序,確保鍵與排序值正確關聯。
以上是如何依值的升序和降序對 Java HashMap 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!