1、java8新特性之put与compute,computeIfAbsent与putIfAbsent区别
是否覆盖value 返回值
put 是 覆盖前
compute 是 覆盖后
putIfAbsent 否 覆盖前
computeIfAbsent 否 覆盖后
是否覆盖value | 返回值 | |
---|---|---|
put | 是 | 覆盖前 |
compute | 是 | 覆盖后 |
putIfAbsent | 否 | 覆盖前 |
computeIfAbsent | 否 | 覆盖后 |
总结:
- put与compute:
不论key是否存在,强制用value覆盖进去。
区别:put返回旧value或null,compute返回新的value
- putIfAbsent与computeIfAbsent:
key存在,则不操作,key不存在,则赋值一对新的(key,value)。
区别:putIfAbsent返回旧value或null,computeIfAbsent返回新的value