最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的Map集合根據(jù)key值排序的實現(xiàn)

 更新時間:2024年03月14日 09:00:28   作者:Rcain_R  
本文主要介紹了Java中的Map集合如何根據(jù)key值排序,包含使用TreeMap和使用lambda表達式和Stream流兩種方法,具有一定的參考價值,感興趣的可以了解一下

Map集合的鍵(key)默認是按照它們的hashCode排序的,這在有時間不符合業(yè)務排序。如果你想要根據(jù)Map的key值進行排序,一般以下有幾種方法可以實現(xiàn)。

方法一:使用TreeMap

使用TreeMap類,它會自動根據(jù)key的自然順序或自定義比較器進行排序。

1、使用key(String)的自然排序:

代碼示例:

// 假設Map為HashMap
Map<String, Integer> unsortedMap = new HashMap<>();  
// 添加元素到unsortedMap  
unsortedMap = ... ;  

// 使用TreeMap進行排序
Map<String, Integer> sortedMap = new TreeMap<>(unsortedMap);

2、使用自定義規(guī)則排序,傳入Comparator自定義排序規(guī)則:

// 假設為HashMap<String, Object> map
// 未排序的HashMap
Map<String, Object> unSortMap = ...; 

// 使用TreeMap并提供一個Comparator用于排序key
Map<String, Object> sortedMap = new TreeMap<>(new Comparator<String>() {
    @Override
    public int compare(String k1, String k2) {
        // 對于字符串key升序排序
        return k1.compareTo(k2);
        // 若需要降序排序,則可以改為
        // return k2.compareTo(k1);
    }
});

// 將原始Map的內(nèi)容復制到TreeMap中,此時Map會根據(jù)key排序
sortedMap.putAll(unSortMap );

方法二:使用lambda表達式和Stream流簡化操作

示例代碼:

// 按照key 升序排序
Map<String, Object> sortedMap = unSortMap.entrySet().stream()
    .sorted(Map.Entry.comparingByKey())
    .collect(Collectors.toMap(
        Map.Entry::getKey,
        Map.Entry::getValue,
        // 解決可能存在的鍵沖突問題,默認保留第一個值
        (oldValue, newValue) -> oldValue,
        // 提供一個新的TreeMap實例作為收集器,用于保持排序
        () -> new TreeMap<>() 
    ));



// 或者,如果要降序排序
Map<String, Object> sortedMapDescending = originalMap.entrySet().stream()
    .sorted(Map.Entry.<String, Object>comparingByKey().reversed())
    .collect(Collectors.toMap(
        Map.Entry::getKey,
        Map.Entry::getValue,
        // 處理鍵沖突
        (oldValue, newValue) -> oldValue, 
        () -> new TreeMap<>()
    ));

注意:此處不論方法一、方法二,對于Map中key為String類型的數(shù)據(jù),都是底層都是按照字典順序進行排序的。

所以一旦有一些特殊要求的排序:

例如:key為:“123-234”,“2134-1234”,“2-123”,

需要根據(jù)key排序為: “2-123”,“123-234”,“2134-1234”時,就需要重新書寫自定義的排序方法 或者 考慮其他的方式實現(xiàn)指定key排序了。

討論一下: 上面key值的Map該如何排序:

// 例:“2-123”,“123-234”,“2134-1234”

Map<String, Object> unSortMap = new HashMap();
map.put("123-234","2");
map.put("2-123","1");
map.put("2134-1234","3");


// 使得unSortMap 按照key值為“2-123”,“123-234”,“2134-1234”進行排序

到此這篇關于Java中的Map集合根據(jù)key值排序的實現(xiàn)的文章就介紹到這了,更多相關Java中Map根據(jù)key值排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

最新評論

镇安县| 德阳市| 历史| 承德市| 北川| 台中市| 黄平县| 乐东| 城口县| 长武县| 富阳市| 静宁县| 上虞市| 方山县| 永春县| 抚顺县| 酉阳| 沧州市| 秦皇岛市| 湖北省| 姚安县| 新乐市| 汉阴县| 涟源市| 英德市| 神木县| 朝阳市| 高邮市| 四子王旗| 莱阳市| 黄大仙区| 来宾市| 峨眉山市| 昭苏县| 无棣县| 卓资县| 乌拉特中旗| 威宁| 施秉县| 门头沟区| 墨江|