本文主要是介绍HashMap putIfAbsent computeIfAbsent 使用方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法功能描述:
putIfAbsent (a,b)
如果当前map 里面没有key 为a 的数据, 那么把key 为 a,值为b放到map 里面,方法放回null, 如果之前有key 为a 的数据,那么返回a 对应的value,无视参数b
computeIfAbsent(a, Function f)
如果map 里面没有key 为a 的数据, 那么使用f 计算一个key对应的value 放到集合里面,方法返回值为key a 最终对应的value(如果之前map 里面就有key 为a 的数据,那么直接返回a 对应的value,否则返回使用Function 计算出来的value)
computeIfPresent(a,BiFunction bf)
如果当前map 里面不存在key为a 的数据,那么什么也不做。
反之,如果map 里面存在key 为a 的数据,那么使用bf 函数重新计算value, 赋值为a 对应的 value. 最终返回map 里面key a 对应的value
测试代码:
package com.xinyu.test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.function.Function;public class TestArray37 {public static void main(String[] args) {HashMap<String,Integer> test = new HashMap<>();String aaa = "aaa";test.put(aaa,1);//putIfAbsent 如果当前map 里面没有 那么才把值放到map 里面 返回map 里面key 对应的值 如果之前没有值 返回nulltest.putIfAbsent(aaa,3);System.out.println(test.get(aaa));String ddd = "ddd";System.out.println(test.putIfAbsent(ddd, 20));//getOrDefault 如果没有对应的key 则返回默认值String ccc = "ccc";Integer orDefault = test.getOrDefault(ccc, -1);System.out.println(orDefault);//如果对应的key 没有值 那么计算一个key对应的valuetest.computeIfAbsent(aaa, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return 100;}});System.out.println(test.get(aaa));String eee = "eee";test.computeIfAbsent(eee, new Function<String, Integer>() {@Overridepublic Integer apply(String s) {//计算key 对应的valuereturn s.length();}});System.out.println(test.get(eee));}
}
控制台输出:
1
null
-1
1
3Process finished with exit code 0
这篇关于HashMap putIfAbsent computeIfAbsent 使用方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!