1.HashMap的存储步骤:

1.传入key和value,判断key是否为null,如果为null,则调用putForNullKey,以null作为key存储到哈希表中;
2. 然后计算key的hash值,根据hash值搜索在哈希表table中的索引位置,若当前索引位置不为null,则对该位置的Entry链表进行遍历,如果链中存在该key,则用传入的value覆盖掉旧的value,同时把旧的value返回,结束;
3. 否则调用addEntry,用key-value创建一个新的节点,并把该节点插入到该索引对应的链表的头部

参考网址:http://blog.csdn.net/jeffleo/article/details/54946424

2.HashMap与HashTable的比较

1.继承的父类不同

2.线程安全性不同

3.是否提供contains方法

4.key和value是否允许为null

5.两个遍历的内部实现方式不同

6.hash值不同

参考网址为:http://blog.csdn.net/fujiakai/article/details/51585767

3.concurrentHashMap

并发编程中,concurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上

提供了更好的写并发能力,但同时降低了对读一致性的要求。

HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中

一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是concurrenthashmap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段啊的数据也能被其他线程访问。

参考网址:http://ifeve.com/concurrenthashmap/

最新文章

  1. jQuery.last() 函数
  2. Bootstrap 表单
  3. 三:关于tcp
  4. 计算2的N次方&&计算e
  5. 关于ArrayList 容量问题
  6. hdu-5496 Beauty of Sequence(递推)
  7. linux 压缩文件 及压缩选项详解
  8. SE 2014年5月5日
  9. 文件是数据的流式IO抽象,mmap是对文件的块式IO抽象
  10. 【mysql】mysql null值
  11. Yii2 rules验证规则大全
  12. 树莓派上启动nfs server
  13. java通过dom读写xml文件
  14. USB学习笔记连载(八):FX2替换到FX2LP需要注意事项
  15. 【CF398B】B. Painting The Wall(期望)
  16. bmp图像数据转jpg图像的C语言实现
  17. P4005 小 Y 和地铁
  18. 行列式(二):余子式&代数余子式
  19. Hadoop1.2.1 启停的Shell 脚本分析
  20. Eclipse的Java开发中jar导入后无法使用包内class的解决方案

热门文章

  1. flutter-dart语言初识
  2. TCP的.cc文件代码解释(中文)
  3. 这样讲 SpringBoot 自动配置原理,你应该能明白了吧
  4. 9- 基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板 C6678板卡
  5. Linux man学习
  6. C++ 一周刷完C++基础课程(同C程序进行比较)
  7. LeNet-5模型的keras实现
  8. (转) ESB 企业服务总线基本内容概述
  9. 一张图明白jenkins和docker作用
  10. Nginx 502 Bad Gateway 的错误的解决方案