标签:lis col system 区别 span pack import val util
put与putIfAbsent区别,put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,而putIfAbsent在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。底层实现:
public V put(K key, V value) { if (value == null) throw new NullPointerException(); int hash = hash(key.hashCode()); return segmentFor(hash).put(key, hash, value, false); } public V putIfAbsent(K key, V value) { if (value == null) throw new NullPointerException(); int hash = hash(key.hashCode()); return segmentFor(hash).put(key, hash, value, true); }
例子:
package com.xx; import java.util.HashMap; import java.util.Map; /** * JustForTest * * @create 2018-06-20 12:14 */ public class TestHan { public static void main(String[] args) { /** * put */ Map<Integer,String> map = new HashMap<>(); map.put(1,"ZhangSan"); map.put(2,"LiSi"); map.put(1,"WangWu"); map.forEach((key,value) ->{ System.out.println("key : " + key + " , value : " + value); }); /** * putIfAbsent */ Map<Integer,String> putIfAbsentMap = new HashMap<>(); putIfAbsentMap.put(1,"张三"); putIfAbsentMap.put(2,"李四"); putIfAbsentMap.put(1,"王五"); putIfAbsentMap.forEach((key,value) ->{ System.out.println("key : " + key + " , value : " + value); }); } }
输出结果:
key : 1 , value : WangWu
key : 2 , value : LiSi
key : 1 , value : 张三
key : 2 , value : 李四
标签:lis col system 区别 span pack import val util
原文地址:http://blog.51cto.com/hanchaohan/2130916