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

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

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

在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,雖然代碼稍長,但兼容性最好。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要介紹了如何利用Spring的@Import擴展點與spring進行無縫整合的實例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    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ù)傳,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • MyBatis的mapper.xml文件熱加載功能實現(xiàn)方案

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

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

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

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

最新評論

万盛区| 丰原市| 宜宾市| 磐石市| 虹口区| 胶南市| 鄂托克前旗| 安义县| 寻甸| 明光市| 尚志市| 平阴县| 静安区| 湘潭县| 时尚| 博客| 河南省| 信宜市| 丰原市| 安平县| 波密县| 海伦市| 临漳县| 朝阳区| 唐山市| 孝昌县| 郁南县| 綦江县| 庐江县| 开封县| 宜良县| 新乡县| 济阳县| 德昌县| 静乐县| 方城县| 黑水县| 裕民县| 东至县| 永兴县| 永寿县|