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

Java中Map.merge()方法使用示例詳解

 更新時(shí)間:2023年08月16日 16:21:34   作者:吳名氏.  
這篇文章主要介紹了Map.merge()方法使用和介紹,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1 簡(jiǎn)介

JDK8中新增了Map.merge()方法,但是之前沒(méi)有用過(guò)。merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)。

  • key:map的key
  • value:使用者傳入的值
  • remappingFunction:BiFunction函數(shù)式接口

當(dāng)map中不存在指定的key時(shí),便將傳入的value設(shè)置為key的值,相當(dāng)于map.put(key, value);當(dāng)key存在值時(shí),執(zhí)行一個(gè)方法該方法接收key的舊值和傳入的value,執(zhí)行自定義的方法返回最終結(jié)果設(shè)置為key的值。

2 源碼

default V merge(K key, V value,
            BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
        Objects.requireNonNull(remappingFunction);
        Objects.requireNonNull(value);
        V oldValue = get(key);
        V newValue = (oldValue == null) ? value :
                   remappingFunction.apply(oldValue, value);
        if(newValue == null) {
            remove(key);
        } else {
            put(key, newValue);
        }
        return newValue;
    }

3 實(shí)例

3.1 簡(jiǎn)單實(shí)例

/**
     * 簡(jiǎn)單實(shí)例
     */
    @Test
    public void someTest01() {
        Map<String, Integer> map = new HashMap<>();
        map.put("key1", 10);
        map.put("key2", 20);
        // 當(dāng)key存在時(shí),進(jìn)行old+value;當(dāng)key不存在時(shí),將key的值設(shè)置為1
        map.merge("key", 1, Integer::sum);
        // 當(dāng)key1存在時(shí),進(jìn)行old+value;當(dāng)key1不存在時(shí),將key1的值設(shè)置為20
        map.merge("key1", 20, Integer::sum);
        map.forEach((k, v) -> System.out.println("k:" + k + "---" + "v:" + v));
    }
    // ------------------------------------------------------------------
    // 打印結(jié)果
    k:key1---v:30
    k:key2---v:20
    k:key---v:1

3.2 開(kāi)發(fā)實(shí)例

@Data
public class Student {
    /**
     * 學(xué)生姓名
     */
    private String studentName;
    /**
     * 學(xué)科
     */
    private String subject;
    /**
     * 分?jǐn)?shù)
     */
    private Integer score;
    public Student(String studentName, String subject, Integer score) {
        this.studentName = studentName;
        this.subject = subject;
        this.score = score;
    }
}
// ------------------------------------------------------------------
    /**
     * 統(tǒng)計(jì)學(xué)生成績(jī)
     */
    @Test
    public void someTest02() {
        List<Student> students = Arrays.asList(
                new Student("yoni", "English", 80),
                new Student("yoni", "Chiness", 98),
                new Student("yoni", "Math", 95),
                new Student("taohai.wang", "English", 50),
                new Student("taohai.wang", "Chiness", 72),
                new Student("taohai.wang", "Math", 41),
                new Student("Seely", "English", 88),
                new Student("Seely", "Chiness", 89),
                new Student("Seely", "Math", 92)
        );
        Map<String, Integer> scoreMap = new HashMap<>();
        students.forEach(student -> scoreMap.merge(student.getStudentName(), student.getScore(), Integer::sum));
        scoreMap.forEach((k, v) -> System.out.println("key:" + k + "---" + "value:" + v));
    }
// ------------------------------------------------------------------
// 運(yùn)行結(jié)果
姓名:Seely---成績(jī):269
姓名:taohai.wang---成績(jī):163
姓名:yoni---成績(jī):273

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

您可能感興趣的文章:

相關(guān)文章

  • Java程序單實(shí)例運(yùn)行的簡(jiǎn)單實(shí)現(xiàn)

    Java程序單實(shí)例運(yùn)行的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java程序單實(shí)例運(yùn)行的簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

    聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題

    這篇文章主要介紹了聊聊SpringBoot的@Scheduled的并發(fā)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Springboot使用RabbitMQ實(shí)現(xiàn)關(guān)閉超時(shí)訂單(示例詳解)

    Springboot使用RabbitMQ實(shí)現(xiàn)關(guān)閉超時(shí)訂單(示例詳解)

    介紹了如何在Spring Boot項(xiàng)目中使用RabbitMQ實(shí)現(xiàn)訂單的延時(shí)處理和超時(shí)關(guān)閉,通過(guò)配置RabbitMQ的交換機(jī)、隊(duì)列和綁定關(guān)系,以及編寫監(jiān)聽(tīng)方法,實(shí)現(xiàn)了訂單數(shù)據(jù)的發(fā)送和延時(shí)消費(fèi),感興趣的朋友一起看看吧
    2025-01-01
  • SpringCloud?微服務(wù)數(shù)據(jù)權(quán)限控制的實(shí)現(xiàn)

    SpringCloud?微服務(wù)數(shù)據(jù)權(quán)限控制的實(shí)現(xiàn)

    這篇文章主要介紹的是權(quán)限控制的數(shù)據(jù)權(quán)限層面,意思是控制可訪問(wèn)數(shù)據(jù)資源的數(shù)量,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • mybatis-xml映射文件及mybatis動(dòng)態(tài)sql詳解

    mybatis-xml映射文件及mybatis動(dòng)態(tài)sql詳解

    XML映射文件的名稱與Mapper接口名稱一致,并且將XML映射文件和Mapper接口放置在相同包下(同包同名),這篇文章主要介紹了mybatis-xml映射文件及mybatis動(dòng)態(tài)sql的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Java中List遍歷刪除元素remove()的方法

    Java中List遍歷刪除元素remove()的方法

    這篇文章主要介紹了Java中List遍歷刪除元素remove()的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot大事務(wù)問(wèn)題的常用優(yōu)化方案

    SpringBoot大事務(wù)問(wèn)題的常用優(yōu)化方案

    大事務(wù)是指運(yùn)行時(shí)間比較長(zhǎng),操作的數(shù)據(jù)比較多的事務(wù)123,大事務(wù)的產(chǎn)生原因包括操作的數(shù)據(jù)比較多、大量的鎖競(jìng)爭(zhēng)、事務(wù)中有其他非數(shù)據(jù)庫(kù)的耗時(shí)操作等,本文給大家總結(jié)了SpringBoot大事務(wù)問(wèn)題的常用優(yōu)化方案,需要的朋友可以參考下
    2024-04-04
  • springboot普通類中如何獲取session問(wèn)題

    springboot普通類中如何獲取session問(wèn)題

    這篇文章主要介紹了springboot普通類中如何獲取session問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Token過(guò)期實(shí)現(xiàn)自動(dòng)續(xù)期的方法步驟

    Token過(guò)期實(shí)現(xiàn)自動(dòng)續(xù)期的方法步驟

    本文詳細(xì)解析了Token在防止表單重復(fù)提交、身份驗(yàn)證及過(guò)期處理中的應(yīng)用,涵蓋Token的生成流程、過(guò)期機(jī)制及續(xù)期方案,特別介紹了單token與雙token兩種策略,需要的朋友可以參考下
    2026-05-05
  • SpringBoot自定義Starter與自動(dòng)配置實(shí)現(xiàn)方法詳解

    SpringBoot自定義Starter與自動(dòng)配置實(shí)現(xiàn)方法詳解

    在Spring Boot官網(wǎng)為了簡(jiǎn)化我們的開(kāi)發(fā),已經(jīng)提供了非常多場(chǎng)景的Starter來(lái)為我們使用,即便如此,也無(wú)法全面的滿足我們實(shí)際工作中的開(kāi)發(fā)場(chǎng)景,這時(shí)我們就需要自定義實(shí)現(xiàn)定制化的Starter
    2023-02-02

最新評(píng)論

讷河市| 龙里县| 施甸县| 周宁县| 德江县| 平远县| 富阳市| 泰州市| 开鲁县| 浮梁县| 商丘市| 汨罗市| 湟中县| 南投县| 鄢陵县| 抚宁县| 伊宁县| 乌什县| 黑龙江省| 喀喇| 德庆县| 崇明县| 隆回县| 东海县| 酒泉市| 大厂| 桐乡市| 长海县| 留坝县| 阜康市| 东方市| 桃园县| 莱西市| 曲水县| 炉霍县| 抚顺市| 临湘市| 喀喇沁旗| 曲靖市| 名山县| 舒兰市|