put与putIfAbsent区别
2016-11-10 00:00
148 查看
put与putIfAbsent区别,put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,而putIfAbsent在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。
底层实现:
put事例:
输出结果:
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); }
put事例:
Map<Integer, String> map = new HashMap<>(); map.put(1, "张三"); map.put(2, "李四"); map.put(1, "王五"); map.forEach((key,value)->{ System.out.println("key = " + key + ", value = " + value); });
输出结果:
key = 1, value = 王五 key = 2, value = 李四
putIfAbsent事例:
Map<Integer, String> putIfAbsent = new HashMap<>(); putIfAbsent.putIfAbsent(1, "张三"); putIfAbsent.putIfAbsent(2, "李四"); putIfAbsent.putIfAbsent(1, "王五"); putIfAbsent.forEach((key,value)->{ System.out.println("key = " + key + ", value = " + value); });
输出结果:
key = 1, value = 张三 key = 2, value = 李四
相关文章推荐
- Put JSF to work 2
- Put it into a Context!(写作中)
- puttext.c
- put class into dll in dos by hand step by step
- 如何配置Tomcat支持HTTP Delete和Put 方法
- [DirectShow]put_Owner返回E_NOINTERFACE的思考
- Map 主键唯一,当put相同主键时。。。
- PHP 模拟$_PUT实现代码
- Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据
- ODBC API 使用SQLPutData实现SQL数据库BLOB(TEXT、IMAGE类型字段)数据提交[原创](一)
- ftp put 550 Access is denied
- file_put_contents() -- 写入文件内容
- hadoop海量put时出现的socket超时导致put失败解决方案
- jax-rs(Java API for RESTful Web Services)实践教程 之二 —— get/post/put/delete/head
- cin.get(),cout.put(),cin.eof()的应用案例
- PHP file_put_contents() 函数
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误
- Hbase源码分析3-从Put到HFile
- [Qt练习]QIuputDialog 和 QMessageBox
- LevelDB PUT/GET操作调用关系