欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

工作機制

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

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

實際應(yīng)用案例

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

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

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

性能考量

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

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

附:算法題

題目:一個整型數(shù)組里除了兩個數(shù)字之外,其他的數(shù)字都出現(xiàn)了兩次,請寫程序找出這兩個只出現(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • SpringBoot如何實現(xiàn)一個Redis限流注解

    SpringBoot如何實現(xiàn)一個Redis限流注解

    這篇文章主要介紹了利用SpringBoot實現(xiàn)一個Redis限流注解方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java實現(xiàn)HashMap排序方法的示例詳解

    Java實現(xiàn)HashMap排序方法的示例詳解

    這篇文章主要通過一些示例為大家介紹了Java對HashMap進行排序的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解一下
    2022-05-05
  • Java匿名對象與匿名內(nèi)部類

    Java匿名對象與匿名內(nèi)部類

    本篇文章給大家詳細講解了Java匿名對象與匿名內(nèi)部類的相關(guān)知識點,有興趣的讀者一起學(xué)習(xí)下。
    2018-03-03
  • Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    這篇文章主要介紹了Java中Array、List、Map相互轉(zhuǎn)換的方法詳解,在實際項目開發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對于一個整型數(shù)組中尋找一個整數(shù)與所給的一個整數(shù)值相同,需要的朋友可以參考下
    2023-08-08
  • java實現(xiàn)圖片轉(zhuǎn)base64字符串 java實現(xiàn)base64字符串轉(zhuǎn)圖片

    java實現(xiàn)圖片轉(zhuǎn)base64字符串 java實現(xiàn)base64字符串轉(zhuǎn)圖片

    這篇文章主要為大家詳細介紹了java實現(xiàn)圖片轉(zhuǎn)base64字符串,java實現(xiàn)base64字符串轉(zhuǎn)圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • maven添加jar包到本地倉庫的實現(xiàn)

    maven添加jar包到本地倉庫的實現(xiàn)

    本文主要介紹了maven添加jar包到本地倉庫的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解java如何處理各種批量數(shù)據(jù)入庫

    詳解java如何處理各種批量數(shù)據(jù)入庫

    這篇文章主要為大家詳細介紹了java如何使用BlockingQueue處理各種批量數(shù)據(jù)入庫,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • java集合類遍歷的同時如何進行刪除操作

    java集合類遍歷的同時如何進行刪除操作

    這篇文章主要介紹了java集合類遍歷的同時如何進行刪除操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Springboot項目實現(xiàn)Mysql多數(shù)據(jù)源切換的完整實例

    Springboot項目實現(xiàn)Mysql多數(shù)據(jù)源切換的完整實例

    這篇文章主要給大家介紹了關(guān)于Springboot項目實現(xiàn)Mysql多數(shù)據(jù)源切換的完整實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java操作redis實現(xiàn)增刪查改功能的方法示例

    Java操作redis實現(xiàn)增刪查改功能的方法示例

    這篇文章主要介紹了Java操作redis實現(xiàn)增刪查改功能的方法,涉及java操作redis數(shù)據(jù)庫的連接、設(shè)置、增刪改查、釋放資源等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論