HashMap、HashSet、HashTable比较

原创
08/10 09:50
阅读数 50
1.HashMap和HashTable区别
  • 线程安全:HashMap线程不安全。而HashTable通过让get/put上锁达到线程安全,不过代价很大。
  • HashMap允许key/value为null(但只能有一个null键),而HashTable不允许。
2.HashMap和HashSet区别(HashSet实现原理、为什么Hashset可以不重复)
  • HashSet的实现是依托于HashMap的,它会创建一个HashMap对象,所有的值都存在HashMap中,但为了实现HashSet不允许重复值,所以HashSet的值是存在Map的key的位置的,而value是存PRESENT变量,仅仅是一个占位符。
3.HashTable和ConCurrentHashMap区别
  • HashTable是对整个Hash表加锁的,会锁住表让线程独占,导致效率低下。
  • 而ConcurrentHashMap在对象中保存了一个segment数组,每个segment相当于一个HashTable,当定位到某一segment内时,会对该segment加锁,但不影响对其他segment操作的线程的运行,减少了锁的粒度,实现了多线程。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部