注: 今天看到的一篇讲hashMap,hashTable,concurrentHashMap很透彻的一篇文章, 感谢原作者的分享. 原文地址: http://blog.csdn.net/zhangerqing/article/details/8193118 Java集合类是个非常重要的知识点,HashMap.HashTable.ConcurrentHashMap等算是集合类中的重点,可谓"重中之重",首先来看个问题,如面试官问你:HashMap和HashTable有什么区别,一个比较简…
注: 今天看到的一篇讲hashMap,hashTable,concurrentHashMap很透彻的一篇文章, 感谢原作者的分享.  原文地址: http://blog.csdn.net/zhangerqing/article/details/8193118  Java集合类是个非常重要的知识点,HashMap.HashTable.ConcurrentHashMap等算是集合类中的重点,可谓"重中之重",首先来看个问题,如面试官问你:HashMap和HashTable有什么区别,一个比…
1:hashmap简介(如下,数组-链表形式) HashMap的存储结构 图中,紫色部分即代表哈希表,也称为哈希数组(默认数组大小是16,每对key-value键值对其实是存在map的内部类entry里的),数组的每个元素都是一个单链表的头节点,跟着的绿色链表是用来解决冲突的,如果不同的key映射到了数组的同一位置处,就会采用头插法将其放入单链表中. 2:hashmap原理(即put和get原理) 2.1 put原理 1.根据key获取对应hash值:int hash = hash(key.ha…
HashMap 不是线程安全的 HashTable,concurrentHashMap 是线程安全 HashTable 底层是所有方法都加有锁(synchronized) 所以操作起来效率会低 concurrentHashMap 底层是分断锁(根据自定的hashcode算法生成的对象来获取对应hashcode的分段块进行加锁),所以效率会比hashTable提升n倍,相当于一个分断的hashTable LinkedHashMap 是一个双向链表,按顺序存取,读取效率会比hashMap慢 Hash…
线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用.在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的. statck:堆栈类,先进后出 hashtable:就比hashmap多了个线程安全 enumeration:枚举,相当于迭代器 除了这些之外,其他的都是非线程安全…
Map:“键值”对映射的抽象接口.该映射不包括重复的键,一个键对应一个值. SortedMap:有序的键值对接口,继承Map接口. NavigableMap:继承SortedMap,具有了针对给定搜索目标返回最接近匹配项的导航方法的接口. AbstractMap:实现了Map中的绝大部分函数接口.它减少了“Map的实现类”的重复编码. Dictionary:任何可将键映射到相应值的类的抽象父类.目前被Map接口取代. TreeMap:有序散列表,实现SortedMap 接口,底层通过红黑树实现.…
1. Hashtable 和 HashMap (1)区别,这两个类主要有以下几方面的不同:Hashtable和HashMap都实现了Map接口,但是Hashtable的实现是基于Dictionary抽象类. 在HashMap中,null可以作为键,这样的键只有一个:可以有一个或多个键所对应的值为null. 当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null. 因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,…
Collections.synchronizedMap()和Hashtable一样,实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对HashMap中的所有桶加了锁.…
HashMap:每个隔间都没锁门,有人想上厕所,管理员指给他一个隔间,里面没人的话正常用,里面有人的话把这个人赶出来然后用. 优点,每个人进来不耽误都能用:缺点,每一个上厕所的人都有被中途赶出来的危险.   Hashtable:在卫生间外面安装一个大门,有人想上厕所,问管理员要一个钥匙进门,把门反锁用,用完后出来,把钥匙交换给管理员.在这个人上厕所期间,其他所有人都必须在外面排号. 优点,每个人都能安心上完厕所:缺点,卫生间外面可能已经出了人命. =_=   ConcurrentHashMap:…
一.原理 Hashtable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化: 初始size为11,扩容:newsize = olesize*2+1: HashMap 底层数组+链表实现,可以存储null键和null值,线程不安全: 初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂: 扩容针对整个Map,每次扩容时,…