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

java中判斷map<String,List>是否有key的四種方法

 更新時間:2025年12月26日 08:46:18   作者:悟能不能悟  
這篇文章主要為大家詳細介紹了java中判斷map<String,List>是否有key的四種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

在Java中,你可以通過幾種方式實現(xiàn)這個邏輯。以下是幾種常見的實現(xiàn)方法:

方法1:傳統(tǒng)方式(使用 containsKey)

Map<String, List<String>> map = new HashMap<>();

public void addValue(String key, String value) {
    if (map.containsKey(key)) {
        map.get(key).add(value);
    } else {
        List<String> newList = new ArrayList<>();
        newList.add(value);
        map.put(key, newList);
    }
}

方法2:使用 getOrDefault(Java 8+)

Map<String, List<String>> map = new HashMap<>();

public void addValue(String key, String value) {
    List<String> list = map.getOrDefault(key, new ArrayList<>());
    list.add(value);
    map.put(key, list);
}

方法3:使用 computeIfAbsent(推薦,Java 8+)

Map<String, List<String>> map = new HashMap<>();

public void addValue(String key, String value) {
    map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
}

方法4:使用 putIfAbsent

Map<String, List<String>> map = new HashMap<>();

public void addValue(String key, String value) {
    map.putIfAbsent(key, new ArrayList<>());
    map.get(key).add(value);
}

完整示例

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        // 使用方法3:computeIfAbsent(最簡潔)
        Map<String, List<String>> map = new HashMap<>();
        
        addToMap(map, "fruit", "apple");
        addToMap(map, "fruit", "banana");
        addToMap(map, "vegetable", "carrot");
        addToMap(map, "fruit", "orange");
        
        System.out.println(map);
        // 輸出: {vegetable=[carrot], fruit=[apple, banana, orange]}
    }
    
    // 使用 computeIfAbsent
    public static void addToMap(Map<String, List<String>> map, String key, String value) {
        map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
    }
}

針對不同類型 List 的通用方法

如果你需要處理不同類型的數(shù)據(jù),可以使用泛型:

public class MapUtils {
    // 通用方法
    public static <K, V> void addToListInMap(Map<K, List<V>> map, K key, V value) {
        map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
    }
    
    // 使用示例
    public static void main(String[] args) {
        Map<String, List<Integer>> intMap = new HashMap<>();
        Map<String, List<Double>> doubleMap = new HashMap<>();
        Map<String, List<Object>> objectMap = new HashMap<>();
        
        addToListInMap(intMap, "scores", 100);
        addToListInMap(doubleMap, "prices", 19.99);
        addToListInMap(objectMap, "items", "item1");
    }
}

線程安全版本

如果需要在多線程環(huán)境中使用:

Map<String, List<String>> concurrentMap = new ConcurrentHashMap<>();

public void addValueSafely(String key, String value) {
    // 使用 ConcurrentHashMap 的 computeIfAbsent
    concurrentMap.computeIfAbsent(key, k -> 
        Collections.synchronizedList(new ArrayList<>())
    ).add(value);
}

推薦

推薦使用方法3(computeIfAbsent),因為:

  • 代碼最簡潔
  • 避免多次訪問Map
  • 性能較好
  • 是原子操作(在多線程環(huán)境下更安全)

如果你使用的是Java 8之前的版本,可以使用方法1,雖然代碼稍長,但兼容性最好。

到此這篇關于java中判斷map<String,List>是否有key的四種方法的文章就介紹到這了,更多相關java判斷map<String,List>是否有key內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot?實現(xiàn)CAS?Server統(tǒng)一登錄認證的詳細步驟

    SpringBoot?實現(xiàn)CAS?Server統(tǒng)一登錄認證的詳細步驟

    ??CAS(Central?Authentication?Service)中心授權服務,是一個開源項目,目的在于為Web應用系統(tǒng)提供一種可靠的單點登錄,這篇文章主要介紹了SpringBoot?實現(xiàn)CAS?Server統(tǒng)一登錄認證,需要的朋友可以參考下
    2024-02-02
  • 完美解決idea無法搜索下載插件的問題

    完美解決idea無法搜索下載插件的問題

    這篇文章主要介紹了完美解決idea無法搜索下載插件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java中運算符使用步驟(超詳細!)

    java中運算符使用步驟(超詳細!)

    Java中的運算符是編程語言中最基本的組成部分,對于數(shù)據(jù)的操作和處理起著至關重要的作用,這篇文章主要介紹了java中運算符使用步驟的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • SpringBoot2.1 RESTful API項目腳手架(種子)項目

    SpringBoot2.1 RESTful API項目腳手架(種子)項目

    這篇文章主要介紹了SpringBoot2.1 RESTful API項目腳手架(種子)項目,用于搭建RESTful API工程的腳手架,只需三分鐘你就可以開始編寫業(yè)務代碼,不再煩惱于構建項目與風格統(tǒng)一,感興趣的小伙伴們可以參考一下
    2018-12-12
  • IntelliJ IDEA窗口組件具體操作方法

    IntelliJ IDEA窗口組件具體操作方法

    IDEA剛接觸不久,各種常用工具窗口找不到,不小心關掉不知道從哪里打開,今天小編給大家分享這個問題的解決方法,感興趣的朋友一起看看吧
    2021-09-09
  • 如何利用Spring的@Import擴展點與spring進行無縫整合

    如何利用Spring的@Import擴展點與spring進行無縫整合

    這篇文章主要介紹了如何利用Spring的@Import擴展點與spring進行無縫整合的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java快速生成PDF文檔的實例代碼

    Java快速生成PDF文檔的實例代碼

    在如今數(shù)字化時代,越來越多的人使用PDF文檔進行信息傳遞和共享,而使用Java生成PDF文檔也成為了一個非常重要的技能,所以本文我們將為您介紹如何使用Java快速生成PDF文檔,需要的朋友可以參考下
    2023-09-09
  • 基于Java實現(xiàn)多線程下載并允許斷點續(xù)傳

    基于Java實現(xiàn)多線程下載并允許斷點續(xù)傳

    這篇文章主要介紹了基于Java實現(xiàn)多線程下載并允許斷點續(xù)傳,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • MyBatis的mapper.xml文件熱加載功能實現(xiàn)方案

    MyBatis的mapper.xml文件熱加載功能實現(xiàn)方案

    文章分析了Arthas無法直接熱替換MyBatis的mapper.xml文件的限制,并提出了多種變通方法來實現(xiàn)類似效果,這些方法包括結合MyBatis的熱加載功能、使用Arthas和類重加載、動態(tài)刷新MappedStatement等,文章還建議在不同環(huán)境中使用不同的解決方案,需要的朋友可以參考下
    2026-02-02
  • 詳解Java語言中一個字符占幾個字節(jié)?

    詳解Java語言中一個字符占幾個字節(jié)?

    這篇文章主要介紹了Java語言中一個字符占幾個字節(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論

高唐县| 弥渡县| 南漳县| 柯坪县| 临沭县| 抚顺县| 景泰县| 弥勒县| 清原| 彝良县| 许昌市| 乌拉特后旗| 翁源县| 突泉县| 韶山市| 南木林县| 德阳市| 于田县| 桦南县| 金堂县| 新密市| 三江| 会宁县| 奉新县| 芦山县| 日照市| 泌阳县| 双峰县| 天门市| 荣昌县| 清水县| 周宁县| 公主岭市| 龙口市| 营山县| 广灵县| 金昌市| 克什克腾旗| 贵州省| 奇台县| 新安县|