首頁 > Java > java教程 > 如何依值的升序和降序對 Java HashMap 進行排序?

如何依值的升序和降序對 Java HashMap 進行排序?

Susan Sarandon
發布: 2024-11-26 17:38:15
原創
615 人瀏覽過

How to Sort a Java HashMap by Values in Ascending and Descending Order?

按值對 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板