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

Java?Map的compute方法舉例詳解

 更新時(shí)間:2024年06月22日 13:58:07   作者:喻師傅  
Java中的Map是一種用于存儲(chǔ)鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu),它提供了一系列的方法來(lái)操作和訪問(wèn)其中的元素,下面這篇文章主要給大家介紹了關(guān)于Java?Map的compute方法舉例詳解的相關(guān)資料,需要的朋友可以參考下

1.compute方法

compute 方法是 Map 接口中的一個(gè)方法,用于根據(jù)指定的鍵和計(jì)算函數(shù)對(duì)指定鍵的值進(jìn)行修改。
方法的簽名如下:

default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
  • key:要操作的鍵。
  • remappingFunction:一個(gè)接收鍵和當(dāng)前鍵對(duì)應(yīng)的值作為輸入,并返回一個(gè)新值的函數(shù)。

compute 方法的行為取決于指定的鍵當(dāng)前是否存在于 Map 中

  • 如果指定的鍵存在且對(duì)應(yīng)的值不為 null,則將鍵和對(duì)應(yīng)的值傳遞給 remappingFunction 函數(shù)。該函數(shù)返回的值將作為新的鍵值對(duì)中的值。如果函數(shù)返回的值為 null,則會(huì)從 Map 中刪除該鍵。

2.當(dāng)指定的鍵不存在或其對(duì)應(yīng)的值為 null 時(shí),它會(huì)根據(jù) remappingFunction 函數(shù)的返回值來(lái)確定如何處理:

  • 如果 remappingFunction 返回了一個(gè)非 null 的值,則會(huì)將新的鍵值對(duì)添加到 Map 中。
  • 如果 remappingFunction 返回了 null,則會(huì)從 Map 中刪除該鍵(如果存在)。

示例:

import java.util.HashMap;
import java.util.Map;

public class ComputeExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè) HashMap 實(shí)例
        Map<String, Integer> map = new HashMap<>();
        
        // 添加鍵值對(duì)到 HashMap
        map.put("key1", 10);
        map.put("key2", 20);
        map.put("key3", null);

        // 使用 compute 方法更新現(xiàn)有的鍵值對(duì)
        map.compute("key1", (k, v) -> v == null ? 1 : v + 1); // key1 存在,值為 10,將值更新為 11
        map.compute("key2", (k, v) -> v == null ? 1 : v + 1); // key2 存在,值為 20,將值更新為 21
        map.compute("key3", (k, v) -> v == null ? null : v + 1); // key3 存在,值為 null,將值更新為 1
        map.compute("key4", (k, v) -> v == null ? 1 : v + 1); // key4 不存在,直接返回 1
        
        // 輸出更新后的 Map 內(nèi)容
        System.out.println("Updated Map: " + map);
    }
}
  • 對(duì)于已存在的鍵值對(duì):
    • 如果值為 null,則將值更新為 1
    • 如果值不為 null,則將原值加 1。
  • 對(duì)于不存在的鍵值對(duì)或者鍵的值為null:
    • 對(duì)于Key4,remappingFunction 返回了一個(gè)非 null 的值,則會(huì)將新的鍵值對(duì)添加到 Map 中。
    • 對(duì)于Key3,remappingFunction 返回了 null,則會(huì)從 Map 中刪除該鍵(如果存在)。

輸出更新后的 Map 內(nèi)容,可以看到每個(gè)鍵值對(duì)根據(jù) remappingFunction 的結(jié)果進(jìn)行了更新或未發(fā)生改變。:

Updated Map: {key1=11, key2=21,key4=1}

這說(shuō)明 compute 方法根據(jù)指定的函數(shù)對(duì) Map 中的鍵值對(duì)進(jìn)行了更新或操作。

2.computeIfAbsent方法

根據(jù)指定的鍵和計(jì)算函數(shù)在需要時(shí)對(duì)指定鍵的值進(jìn)行修改。

方法的簽名如下:

default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
  • key:要操作的鍵。
  • mappingFunction:一個(gè)接收鍵作為輸入,并返回對(duì)應(yīng)值的函數(shù)。

computeIfAbsent 方法的行為:

  • 如果指定的鍵存在,并且對(duì)應(yīng)的值不為 null,則直接返回該值,不會(huì)執(zhí)行 mappingFunction 函數(shù)。
  • 如果指定的鍵不存在,或者對(duì)應(yīng)的值為 null,則執(zhí)行 mappingFunction 函數(shù),將函數(shù)返回的結(jié)果作為新的鍵值對(duì)中的值,并將其放入 Map 中。

示例:

import java.util.HashMap;
import java.util.Map;

public class ComputeIfAbsentExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè) HashMap 實(shí)例
        Map<String, Integer> map = new HashMap<>();
        
        // 添加鍵值對(duì)到 HashMap
        map.put("key1", 10);
        map.put("key2", 20);

        // 使用 computeIfAbsent 方法添加新的鍵值對(duì)
        map.computeIfAbsent("key1", k -> 100); // key1 存在,值為 10,不會(huì)執(zhí)行 mappingFunction
        map.computeIfAbsent("key3", k -> 30);  // key3 不存在,執(zhí)行 mappingFunction,將值 30 放入 Map
        
        // 輸出更新后的 Map 內(nèi)容
        System.out.println("Updated Map: " + map);
    }
}
  • 對(duì)于已存在的鍵值對(duì):
    • 如果值不為 null,則直接返回原值,不會(huì)執(zhí)行 mappingFunction 函數(shù)。
  • 對(duì)于不存在的鍵值對(duì)(例如 "key3"):
    • 執(zhí)行 mappingFunction 函數(shù),將函數(shù)返回的值作為新的鍵值對(duì)中的值,并將其放入 Map 中。

最后,我們輸出更新后的 Map 內(nèi)容,可以看到只有在鍵值對(duì)不存在時(shí),mappingFunction 函數(shù)才會(huì)被執(zhí)行

示例輸出:

Updated Map: {key1=10, key2=20, key3=30}

3.computeIfPresent方法

鍵存在且對(duì)應(yīng)的值不為 null 時(shí)對(duì)指定鍵的值進(jìn)行修改。

方法的簽名如下:

default V computeIfPresent(K key, BiFunction&lt;? super K, ? super V, ? extends V&gt; remappingFunction)
  • key:要操作的鍵。
  • remappingFunction:一個(gè)接收鍵和當(dāng)前鍵對(duì)應(yīng)的值作為輸入,并返回一個(gè)新值的函數(shù)。

computeIfPresent 方法的行為如下:

  • 如果指定的鍵存在且對(duì)應(yīng)的值不為 null,則將鍵和對(duì)應(yīng)的值傳遞給 remappingFunction 函數(shù)。該函數(shù)返回的值將作為新的鍵值對(duì)中的值。如果函數(shù)返回的值為 null,則會(huì)從 Map 中刪除該鍵。
  • 如果指定的鍵不存在或其對(duì)應(yīng)的值為 null,則 remappingFunction 函數(shù)將不會(huì)執(zhí)行,computeIfPresent 方法直接返回 null,不會(huì)修改 Map 中的任何內(nèi)容

示例:

import java.util.HashMap;
import java.util.Map;

public class ComputeIfPresentExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè) HashMap 實(shí)例
        Map<String, Integer> map = new HashMap<>();
        
        // 添加鍵值對(duì)到 HashMap
        map.put("key1", 10);
        map.put("key2", 20);

        // 使用 computeIfPresent 方法更新現(xiàn)有的鍵值對(duì)
        map.computeIfPresent("key1", (k, v) -> v * 2); // key1 存在,值為 10,將值更新為 20
        map.computeIfPresent("key2", (k, v) -> v * 2); // key2 存在,值為 20,將值更新為 40
        map.computeIfPresent("key3", (k, v) -> v * 2); // key3 不存在,不會(huì)執(zhí)行 remappingFunction
        
        // 輸出更新后的 Map 內(nèi)容
        System.out.println("Updated Map: " + map);
    }
}
  • 對(duì)于已存在的鍵值對(duì):
    • 如果值不為 null,則將鍵和對(duì)應(yīng)的值傳遞給 remappingFunction 函數(shù),并將函數(shù)返回的值作為新的鍵值對(duì)中的值。
  • 對(duì)于不存在的鍵值對(duì)(例如 "key3"):
    • remappingFunction 函數(shù)將不會(huì)執(zhí)行,computeIfPresent 方法直接返回 null,不會(huì)修改 Map 中的任何內(nèi)容。

最后,我們輸出更新后的 Map 內(nèi)容,可以看到只有存在且值不為 null 的鍵值對(duì)才會(huì)被更新。運(yùn)行該示例將輸出:

Updated Map: {key1=20, key2=40}

computeIfPresent 方法根據(jù)指定的函數(shù)對(duì) Map 中存在且值不為 null 的鍵值對(duì)進(jìn)行了更新或操作。

總結(jié)

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

您可能感興趣的文章:

相關(guān)文章

  • 關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)

    關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)

    下面小編就為大家?guī)?lái)一篇關(guān)于break和continue以及l(fā)abel的區(qū)別和作用(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java打亂ArrayList生成一個(gè)隨機(jī)序列列表

    Java打亂ArrayList生成一個(gè)隨機(jī)序列列表

    有時(shí)候會(huì)需要將一個(gè)ArrayList或者數(shù)組中的數(shù)字打亂,方便后續(xù)使用,比如隨機(jī)出題、答案選項(xiàng)打亂、連線題打亂、抽獎(jiǎng)號(hào)碼打亂等等,把我自己寫的一段代碼貼出來(lái)分享給大家。
    2016-08-08
  • Java實(shí)現(xiàn)文件上傳下載以及查看功能

    Java實(shí)現(xiàn)文件上傳下載以及查看功能

    這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)文件上傳和下載以及查看功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法

    Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法

    這篇文章主要介紹了Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 關(guān)于Idea的Invalidate Caches/Restart使用

    關(guān)于Idea的Invalidate Caches/Restart使用

    項(xiàng)目類導(dǎo)入爆紅可能因Idea緩存異常導(dǎo)致Maven依賴識(shí)別失敗,解決方法為通過(guò)Invalidate Caches/Restart清除緩存,等待重新構(gòu)建索引后重新進(jìn)入項(xiàng)目
    2025-07-07
  • SpringBoot+Vue 前后端接口交互的項(xiàng)目實(shí)踐

    SpringBoot+Vue 前后端接口交互的項(xiàng)目實(shí)踐

    Spring Boot和Vue可以實(shí)現(xiàn)高效、安全的前后端接口交互,實(shí)際開(kāi)發(fā)中應(yīng)根據(jù)項(xiàng)目需求選擇合適的傳參方式、安全策略和性能優(yōu)化方案,具有一定的感興趣的可以了解一下
    2025-07-07
  • springbatch的封裝與使用實(shí)例詳解

    springbatch的封裝與使用實(shí)例詳解

    主要實(shí)現(xiàn)批量數(shù)據(jù)的處理,我對(duì)batch進(jìn)行的封裝,提出了jobBase類型,具體job需要實(shí)現(xiàn)它即可。這篇文章主要介紹了springbatch的封裝與使用 ,需要的朋友可以參考下
    2019-04-04
  • Java老手該當(dāng)心的13個(gè)錯(cuò)誤

    Java老手該當(dāng)心的13個(gè)錯(cuò)誤

    這篇文章主要介紹了Java老手該當(dāng)心的13個(gè)錯(cuò)誤,需要的朋友可以參考下
    2015-04-04
  • 一文搞清楚Spring事務(wù)

    一文搞清楚Spring事務(wù)

    Spring事務(wù)是指在Spring框架中對(duì)于數(shù)據(jù)庫(kù)操作的一種支持,它通過(guò)對(duì)一組數(shù)據(jù)庫(kù)操作進(jìn)行整體控制來(lái)保證數(shù)據(jù)的一致性和完整性。本文介紹Spring事務(wù)介紹的非常詳細(xì),有需要的朋友可以參考本文
    2023-04-04
  • java基礎(chǔ)的詳細(xì)了解第四天

    java基礎(chǔ)的詳細(xì)了解第四天

    這篇文章對(duì)Java編程語(yǔ)言的基礎(chǔ)知識(shí)作了一個(gè)較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來(lái)幫助
    2021-08-08

最新評(píng)論

阿克| 丹凤县| 温泉县| 甘洛县| 徐闻县| 台南市| 汶上县| 西平县| 阿拉善左旗| 海盐县| 苏尼特右旗| 万全县| 高清| 和平县| 抚州市| 溧阳市| 新营市| 洛隆县| 吴桥县| 景东| 昭觉县| 泾源县| 济南市| 略阳县| 泗水县| 永德县| 安阳县| 金川县| 师宗县| 运城市| 宽甸| 阿拉善右旗| 康乐县| 元谋县| 宁城县| 澳门| 扶风县| 嫩江县| 长乐市| 万载县| 河北区|