美文网首页
Map集合中的几种情况

Map集合中的几种情况

作者: 初心myp | 来源:发表于2019-07-29 18:45 被阅读0次

HashMap:

线程不安全
HashMap根据key的hashCode值来保存value,需要注意的是,HashMap不保证遍历的顺序和插入的顺序是一致的。HashMap允许有一条记录的key为null,但是对值是否为null不做要求。

HashTable:

线程安全:因为几乎hashTable里面的每个方法都是使用synchronized修饰的
使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。

解析:因为当一个线程访问HashTable同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进行添加元素,线程2不但不能使用put来添加元素,而且不能使用get获取元素,所以竞争越激烈效率越低。HashTable在竞争激烈的并发环境下表现出效率低下的原因是因为所有访问HashTable的线程都必须竞争同一把锁。

ConcurrentHashMap:

线程安全:
ConcurrentHasMap使用锁分段技术,来保证线程安全

解析:容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHasMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。有些方法需要跨段,如size()和containsValue(),它们可能需要锁定整个表而不仅是某个段,这需要按顺序锁定所有段,操作完毕后,又按顺序释放所有段的锁。

相关文章

  • Map集合中的几种情况

    HashMap: 线程不安全HashMap根据key的hashCode值来保存value,需要注意的是,HashM...

  • 2018-08-02 Json数组形式的字符串转为Map数组

    Json数组形式的字符串转为Map数组 Map集合的几种遍历方式

  • Scala 简明速学04 集合-Map

    Scala 简明速学04 集合-Map Map Scala中Map提供键值对集合。 Map的初始化 Scala中的...

  • 2018-11-26 java 面试(集合)

    Java中的几种集合的区别及适用场景 首先大的集合分为:List,Set,Map三种,其中List与Set是继承自...

  • JavaSE总结(7)Map

    Collection中的集合称为单列集合,Map中的集合称为双列集合。 一、 java.util.Map...

  • List和Map集合详解

    一、List集合中添加Map集合 双重for循环引发的问题,map集合中后面的内容会覆盖前面的内容,原因是map是...

  • 集合框架

    集合框架 Java的集合框架有哪几种: 两种:collection和map,其中collection分为set和L...

  • 2019-01-03

    Map集合 Map集合 1.1Map集合概念 Map集合是一种存放关系对象的对象的双列集合。 1.2Map集合的常...

  • Java基础之Map集合

    ## Java基础之Map集合 Map集合是一种双列集合,存储形式为键值对的形式(Map集合中的键是唯一性的) 如...

  • Map集合的五种遍历方式及Treemap方法

    Map集合:链接: Map集合的五种遍历方式及Treemap方法Set集合:链接: Java中遍历Set集合的三种...

网友评论

      本文标题:Map集合中的几种情况

      本文链接:https://www.haomeiwen.com/subject/dxtirctx.html