java 8中map中compute,computeIfAbsent,computeIfPresent方法介绍

news/2024/7/4 7:49:29

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

compute(计算)

default V compute(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction)

指定的key值在map中的value值进行操作, 如果key存在,则可操作value值; 如果key不存在,操作完成后key,value都保存到map中

    Map<String,Integer> map= Maps.newHashMap();
        map.put("1",1);
        map.put("2",2);
        map.put("3",3);
        
        Integer integer = map.compute("3", (k,v) -> v+1 );
        System.out.println(map);
        Integer integer1 = map.compute("4", (k,v) -> v=9);
        System.out.println(map);
        
    输出:   
    {1=1, 2=2, 3=4}
    {1=1, 2=2, 3=4, 4=9}


computeIfAbsent(不存在时计算)

V computeIfAbsent(K key,Function<? super K, ? extends V> mappingFunction)

第一个是所选map的key,第二个是需要做的操作。这个方法当key值不存在时才起作用。当key存在返回当前value值,不存在执行函数并保存到map中.

   Map<String, Integer> map = Maps.newHashMap();
        map.put("1", 1);
        map.put("2", 2);
        map.put("3", 3);
        //key值存在,则不做操作
        map.computeIfAbsent("1", key -> 90);
        System.out.println(map);
        //key 值不存在,则做操作
        map.computeIfAbsent("4", key -> 90);
        System.out.println(map);
        
    输出:
    {1=1, 2=2, 3=3}
    {1=1, 2=2, 3=3, 4=90}

computeIfPresent(存在时计算)

default V computeIfPresent(K key,BiFunction<? super K, ? super V, ? extends V> remappingFunction)

对指定的在map中已经存在的key的value进行操作。只对已经存在key的进行操作,其他不操作

     Map<String, Integer> map = Maps.newHashMap();
        map.put("1", 1);
        map.put("2", 2);
        map.put("3", 3);
        //key值存在则计算
        map.computeIfPresent("3", (key, value) -> value = 10);
        System.out.println(map);
        //key值不存在,则不做操作
        map.computeIfPresent("4", (key, value) -> 90);
        System.out.println(map);
    输出:
    {1=1, 2=2, 3=10}
    {1=1, 2=2, 3=10}

转载于:https://my.oschina.net/u/563488/blog/3012931


http://www.niftyadmin.cn/n/4541429.html

相关文章

JS之事件委托

前段时间去了慕课网面试前端开发&#xff0c;面试官当时问了我一个关于事件委托的问题&#xff0c;当时一脸蒙逼&#xff0c;心里在想什么鬼&#xff0c;好像都没听过啊&#xff0c;后来回来后赶紧查了一下资料&#xff0c;才知道原来事件委托是js中的经典问题啊&#xff0c;当…

理解 Redis(9) - Publish Subscribe 消息订阅

在窗口1开通一个名为 redis 的通道: 127.0.0.1:6379> SUBSCRIBE redis Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redis" 3) (integer) 1 从窗口2传入信息: 127.0.0.1:6379> PUBLISH redis hi (integer) 1 此时窗口1会收到这…

前端挑战之js编程题(1)

题目要求&#xff1a; 查找两个节点的最近的一个共同的父节点&#xff0c;可以包括节点自身。 思路&#xff1a; 看到题目要求&#xff0c;首先应该想到有三种情况&#xff0c;有两个节点&#xff0c;dom1和dom2&#xff1a; 1、dom1为dom2的最近父节点&#xff0c;判断dom1是否…

PDF文件怎么拆分,PDF拆分技巧

PDF文件怎么拆分呢&#xff1f;现在的PDF文件都会有很多页面&#xff0c;我们想要将这个页面拆分成单个的PDF文件改怎么操作呢&#xff1f;不要着急&#xff0c;下面小编就使用迅捷PDF编辑器为大家分享一下PDF拆分的技巧。  使用软件&#xff1a;迅捷PDF编辑器  软件的操作…

前端挑战之js编程题(2)

题目要求&#xff1a; 实现对一个现有的数组去除重复元素&#xff0c;并返回去除重复元素的数组。 方案&#xff1a; var arr1[1,2,3,1,4,5,3,6] arr2[] for(var i0,lenarr1.length;i<len;i){ if(arr2.indexOf(arr[i])<0){ arr2.push(arr[i]); } } console.log(arr2); 题…

带你简单了解通信工程

通信工程&#xff0c;是电子工程的一个重要分支&#xff0c;也是电子信息类子专业&#xff0c;更是一门重要的基础学科。很多学校也有别的叫法&#xff0c;例如电子通信工程、电信工程等。电子工程&#xff0c;也就是俗称的EE&#xff0c;Electronic Engineering。理论上来说&a…

《彼岸花》

涅槃的彼岸红花生彼岸&#xff0c; 相思不得见。 悲喜随风走&#xff0c; 浮沉如梦幻。

《静夜思》

《静夜思》 一夜一梦一思忧&#xff0c; 一草一叶一春秋。 一山一水一寺隐&#xff0c; 一斋一禅一人修。