HashMap(Map):
特点: key,value存储,key可以为null,同样的key会被覆盖掉
存储结构: 底层采用数组、链表、红黑树来实现的。
原理讲解: 哈希算法(也叫散列),就是把任意长度值(Key)通过散列算法变换成固定长度的key(地址) 通过这个地址进行访问的数据结构它通过把关键码值映射到表中一个。位置来访问记录,以加 快查找的速度。
Hashcode:通过字符串算出它的ascii码,进行mod(取模),算出哈希表中的下标
哈希冲突 用链表是来解决数组下标会覆盖的问题,冲突的问题。为什么hashmap 用两个数据结构。两 个数据结构。JDK8 红黑树???
因为链表查询的时候链表过长了查询效率非常低,所以需要用红黑树
ConcurrentHashMap(并发安全map):
特点: 并发安全的HashMap ,比Hashtable效率更高 存储结构: 底层采用数组、链表、红黑树 内部大量采用CAS操作。并发控制使⽤synchronized 和 CAS 来操作来实现的。
1.8之前采用分段锁 1.8之后数据结构和hashmap很相似,采用cas乐观锁和synchronized来优化并发问题