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

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

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

1 簡介

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

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

當map中不存在指定的key時,便將傳入的value設置為key的值,相當于map.put(key, value);當key存在值時,執(zhí)行一個方法該方法接收key的舊值和傳入的value,執(zhí)行自定義的方法返回最終結(jié)果設置為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 實例

3.1 簡單實例

/**
     * 簡單實例
     */
    @Test
    public void someTest01() {
        Map<String, Integer> map = new HashMap<>();
        map.put("key1", 10);
        map.put("key2", 20);
        // 當key存在時,進行old+value;當key不存在時,將key的值設置為1
        map.merge("key", 1, Integer::sum);
        // 當key1存在時,進行old+value;當key1不存在時,將key1的值設置為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 開發(fā)實例

@Data
public class Student {
    /**
     * 學生姓名
     */
    private String studentName;
    /**
     * 學科
     */
    private String subject;
    /**
     * 分數(shù)
     */
    private Integer score;
    public Student(String studentName, String subject, Integer score) {
        this.studentName = studentName;
        this.subject = subject;
        this.score = score;
    }
}
// ------------------------------------------------------------------
    /**
     * 統(tǒng)計學生成績
     */
    @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));
    }
// ------------------------------------------------------------------
// 運行結(jié)果
姓名:Seely---成績:269
姓名:taohai.wang---成績:163
姓名:yoni---成績:273

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

您可能感興趣的文章:

相關(guān)文章

  • Java程序單實例運行的簡單實現(xiàn)

    Java程序單實例運行的簡單實現(xiàn)

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

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

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

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

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

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

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

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

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

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

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

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

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

    springboot普通類中如何獲取session問題

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

    Token過期實現(xiàn)自動續(xù)期的方法步驟

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

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

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

最新評論

叶城县| 南漳县| 神木县| 广安市| 花垣县| 娱乐| 深水埗区| 永修县| 乌兰浩特市| 额尔古纳市| 图木舒克市| 固阳县| 永州市| 陵水| 渝北区| 华安县| 宜宾市| 桐庐县| 乳山市| 乳源| 营口市| 钟山县| 太湖县| 霍山县| 东至县| 舞阳县| 安阳县| 平乐县| 阜城县| 高阳县| 高阳县| 射洪县| 灵山县| 平阳县| 车致| 资中县| 武汉市| 建瓯市| 临夏县| 长治市| 德格县|