hashMap,hashTable,TreeMap,concurrentHashMap区别

hashMap:

  基于哈希表实现 

treeMap:

  基于二叉树实现,适用于排序

hashTable:

  底层还是HashMap,在方法上加了同步

concurrentHashMap:

  java7底层通过Segment(ReentrantLock) +分段锁实现,一个Segment负责一组数据;java8通过cas来实现线程安全

hashMap的key和value都可以为null,hashTable和concrrentHashMap却都不能。

因为单线程中,map可以通过map.contains(key)判断null是他的值还是未找到key。当多线程使用map.get(key)时返回为null,无法判断key是不存在还是值为空,多线程中,可能再两次调用间已经发生改变。

原文地址:https://www.cnblogs.com/jaxlove-it/p/9799424.html