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

Java中Map.getOrDefault()方法舉例詳解

 更新時(shí)間:2025年02月21日 10:49:39   作者:#聰明的一休  
這篇文章主要介紹了Java?8中Map接口的getOrDefault()方法,該方法在獲取鍵值對(duì)時(shí),如果鍵不存在則返回默認(rèn)值,文中通過一個(gè)統(tǒng)計(jì)網(wǎng)站用戶點(diǎn)擊次數(shù)的應(yīng)用場(chǎng)景,詳細(xì)展示了getOrDefault()的用法,需要的朋友可以參考下

前言

在Java編程中,Map接口是一個(gè)非常重要的集合類型,它存儲(chǔ)鍵值對(duì)(key-value pairs)。隨著Java 8的發(fā)布,java.util.Map接口引入了許多新的默認(rèn)方法,其中之一就是getOrDefault()。這個(gè)方法為開發(fā)者提供了一種簡(jiǎn)潔的方式來訪問映射中的元素,并且當(dāng)給定的鍵不存在時(shí)可以返回一個(gè)默認(rèn)值。本文將詳細(xì)介紹getOrDefault()方法的工作原理、用法以及一些實(shí)際應(yīng)用場(chǎng)景。

getOrDefault() 方法的正式定義如下:

default V getOrDefault(Object key, V defaultValue)
  • key:這是你想要查找的鍵。
  • defaultValue:如果key沒有對(duì)應(yīng)的值,則該參數(shù)指定應(yīng)返回的默認(rèn)值。

工作機(jī)制

當(dāng)你調(diào)用 map.getOrDefault(key, defaultValue) 時(shí),首先會(huì)檢查map中是否存在與key關(guān)聯(lián)的條目。如果存在這樣的條目,那么它的值就會(huì)被返回;反之,如果沒有找到匹配的鍵,那么就直接返回傳入的defaultValue。

這種方法避免了傳統(tǒng)上可能需要寫的冗長(zhǎng)代碼,比如先通過containsKey()判斷是否含有某個(gè)鍵,然后再根據(jù)結(jié)果決定是獲取值還是使用默認(rèn)值。這種簡(jiǎn)化不僅使得代碼更加簡(jiǎn)潔易讀,同時(shí)也減少了潛在的錯(cuò)誤源。

實(shí)際應(yīng)用案例

假設(shè)我們有一個(gè)應(yīng)用程序用來統(tǒng)計(jì)網(wǎng)站用戶的點(diǎn)擊次數(shù)。我們可以使用HashMap<String, Integer>來存儲(chǔ)每個(gè)用戶ID及其對(duì)應(yīng)的點(diǎn)擊數(shù)。但是,在第一次記錄某個(gè)新用戶的行為之前,這個(gè)用戶的ID不會(huì)出現(xiàn)在我們的映射中。這時(shí),getOrDefault()就能派上大用場(chǎng):

Map<String, Integer> userClicks = new HashMap<>();
// 假設(shè)這里有一些邏輯處理...
int userIdClicks = userClicks.getOrDefault(userId, 0);
userClicks.put(userId, userIdClicks + 1);

在這個(gè)例子中,對(duì)于一個(gè)新的用戶ID,getOrDefault()確保了即使該ID尚未存在于映射中也能正確地初始化其點(diǎn)擊計(jì)數(shù)為0,之后再遞增這一數(shù)值。這樣我們就能夠安全地更新所有用戶的點(diǎn)擊數(shù)據(jù)而不用擔(dān)心出現(xiàn)空指針異?;蝾愃频腻e(cuò)誤。

性能考量

雖然getOrDefault()提供了很大的便利性,但在性能敏感的應(yīng)用場(chǎng)景下仍需謹(jǐn)慎使用。特別是當(dāng)defaultValue計(jì)算成本較高時(shí),頻繁調(diào)用此方法可能會(huì)導(dǎo)致不必要的開銷。因此,在設(shè)計(jì)系統(tǒng)時(shí)應(yīng)該權(quán)衡簡(jiǎn)潔性和效率之間的關(guān)系。

總之,Map.getOrDefault() 是Java 8引入的一個(gè)極其有用的功能,它簡(jiǎn)化了從映射中檢索數(shù)據(jù)的過程,并且能夠優(yōu)雅地處理缺失鍵的情況。合理利用這項(xiàng)功能可以幫助開發(fā)人員編寫出更清晰、更可靠的程序。隨著經(jīng)驗(yàn)的增長(zhǎng),您將會(huì)發(fā)現(xiàn)更多適合應(yīng)用getOrDefault()的情境,從而進(jìn)一步提升自己的編程技巧。

附:算法題

題目:一個(gè)整型數(shù)組里除了兩個(gè)數(shù)字之外,其他的數(shù)字都出現(xiàn)了兩次,請(qǐng)寫程序找出這兩個(gè)只出現(xiàn)一次的數(shù)字

代碼:

import java.util.*;
class Main {
	public static void FindNumsAppearOnce(int [] array) {
        int res=0;
        boolean flag=true;
        Map<Integer,Integer> map=new HashMap();
        for(int i=0;i<array.length;i++){
            map.put(array[i], map.getOrDefault(array[i], 0) + 1);       
        }
        for(int j=0;j<array.length;j++){
        if(map.get(array[j])==1&&flag==true){
            System.out.println(array[j]);
            flag=false;
        }  
        else if(map.get(array[j])==1&&flag==false){
            System.out.println(array[j]);
        }  
    }
}
	public static void main(String[] args) {
		int a[]={2,2,3,3,4,6,5,5};
		FindNumsAppearOnce(a);
	}
}

總結(jié)

到此這篇關(guān)于Java中Map.getOrDefault()方法舉例詳解的文章就介紹到這了,更多相關(guān)Java中Map.getOrDefault()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解

    SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解

    這篇文章主要介紹了SpringSecurity中的EnableWebSecurity注解啟用Web安全詳解,@EnableWebSecurity是Spring?Security用于啟用Web安全的注解,典型的用法是該注解用在某個(gè)Web安全配置類上,實(shí)現(xiàn)了接口,需要的朋友可以參考下
    2023-12-12
  • Java并發(fā) 結(jié)合源碼分析AQS原理

    Java并發(fā) 結(jié)合源碼分析AQS原理

    這篇文章主要介紹了Java并發(fā) 結(jié)合源碼分析AQS原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • springboot集成swagger過程解析

    springboot集成swagger過程解析

    這篇文章主要介紹了springboot集成swagger過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 一篇文章帶你Java多線程入門

    一篇文章帶你Java多線程入門

    這篇文章主要為大家介紹了Java多線程入門,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • SpringBoot線程池配置使用示例詳解

    SpringBoot線程池配置使用示例詳解

    Spring?Boot集成@Async注解,支持線程池參數(shù)配置(核心數(shù)、隊(duì)列容量、拒絕策略等)及生命周期管理,結(jié)合監(jiān)控與任務(wù)裝飾器,提升異步處理效率與系統(tǒng)穩(wěn)定性,本文給大家介紹SpringBoot線程池配置使用示例詳解,感興趣的朋友一起看看吧
    2025-07-07
  • SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式

    SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式

    這篇文章主要介紹了SpringBoot 動(dòng)態(tài)配置Profile環(huán)境的方式,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • SpringBoot整合MyBatis超詳細(xì)教程

    SpringBoot整合MyBatis超詳細(xì)教程

    這篇文章主要介紹了SpringBoot整合MyBatis超詳細(xì)教程,下面從配置模式、注解模式、混合模式三個(gè)方面進(jìn)行說明MyBatis與SpringBoot的整合,需要的朋友可以參考下
    2021-05-05
  • Java 集合 Collection介紹及常用方式

    Java 集合 Collection介紹及常用方式

    Collection是單列集合的祖宗接口,它的功能是全部單列集合都可以繼承使用的,這篇文章主要介紹了Java 集合 Collection的常用方式,需要的朋友可以參考下
    2025-05-05
  • SpringBoot中使用?ThreadLocal?進(jìn)行多線程上下文管理及注意事項(xiàng)小結(jié)

    SpringBoot中使用?ThreadLocal?進(jìn)行多線程上下文管理及注意事項(xiàng)小結(jié)

    本文詳細(xì)介紹了ThreadLocal的原理、使用場(chǎng)景和示例代碼,并在SpringBoot中使用ThreadLocal保存請(qǐng)求中攜帶的用戶信息,ThreadLocal通過為每個(gè)線程維護(hù)獨(dú)立的變量副本,解決了線程安全問題,感興趣的朋友一起看看吧
    2025-02-02
  • java:try...catch跳過異常繼續(xù)處理循環(huán)問題

    java:try...catch跳過異常繼續(xù)處理循環(huán)問題

    這篇文章主要介紹了java:try...catch跳過異常繼續(xù)處理循環(huán)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評(píng)論

兴宁市| 惠水县| 应城市| 陆丰市| 辽源市| 普定县| 光泽县| 普兰县| 盘山县| 宜都市| 道真| 双江| 景洪市| 巴彦淖尔市| 中卫市| 石渠县| 甘德县| 茂名市| 泾阳县| 中西区| 北海市| 商丘市| 青神县| 湄潭县| 宣威市| 乌鲁木齐县| 玛纳斯县| 民权县| 鲁山县| 丰顺县| 遂溪县| 麦盖提县| 故城县| 郎溪县| 红原县| 万宁市| 鄂温| 温宿县| 满城县| 尉犁县| 溆浦县|