前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习之HashMap

java学习之HashMap

作者头像
用户8447427
发布2022-08-18 16:17:22
3510
发布2022-08-18 16:17:22
举报
文章被收录于专栏:userlyz学习记录

正文

HashMap的扩容机制

Hashtable、HashMap和ConcurrentHashMap的异同

主要区别有线程安全性、同步(synchronization)以及速度

1、HashMap从结构上看几乎可以等价于Hashtable;HashMap可以接受null的key和value但是Hashtable不行

2、HashMap是非同步(synchronized),Hashtable是同步的;这说明Hashtable是线程安全的,多个线程可以共享一个Hashtable;如果没有正确同步的话,多个线程是无法安全的访问HashMapJava5提供了ConcurrentHashMap是Hashtable的替代,它比Hashtable的性能和扩展性更好

HashMap部分源码截取

Hashtable部分源码截取

public final void forEach(Consumer<? super K> action) {}

public synchronized void forEach(BiConsumer<? super K, ? super V> action) {}

public final void remove() {}

public synchronized V remove(Object key) {}

public V put(K key, V value){}

public synchronized V put(K key, V value) {

3、另一个区别是两个迭代器不同:HashMap的迭代器是(Iterator)是fast-fail迭代器,而Hashtable的迭代器(Enumeration)不是fast-fail迭代器;所以当其他线程改变HashMap的结构(增加或者删除)就会抛出CME(ConcurrentModification 并发修改错误这个错误在单线程中使用迭代器修改HashMap结构的时候(增加和删除)也会引发此错误),当然这个错误也不是一定会发生,具体就要看另一篇 迭代器Enumeration和Iterator的区别

4、由于Hashtable都是线程同步的,所以在单线程环境下比HashMap要慢,如果不需要同步而且是单线程环境,那么HashMap性能要好过Hashtable

5、HashMap不能保证随着时间推移Map中的元素次序是不变的(没整明白)HashMap

_注:_1、是否能让HashMap同步

代码语言:javascript
复制
Map m=Collections.synchronizedMap(HashMap);

2、如果你需要完全的线程安全额时候使用Hashtable

​ 如果是Java 5以上请使用ConcurrentHashMap(使用锁分段技术来保证线程安全)

迭代器

Java学习之迭代器

参考地址

Hashtable、HashMap和ConcurrentHashMap的异同

HashMap这样回答offer就稳了

HashTable,ConcurrentHashMap这些你知道吗

笔记

笔记1

计算机中的逻辑运算(与、或、非、异或、同或、与非、或非)

名称

描述

全1为1,有0为0

全0为0,有1为1

0->1 1->0

异或

不同为1,相同为0

同或

相同为0,相同为1

与非

先与后非

或非

先或后非

代码语言:javascript
复制
& 逻辑与

&& 逻辑与 (逻辑运算符)逻辑与也称为短路逻辑与

|按位或

|| 逻辑或  一个为真即为真,后续不再计算

^(异或运算符)

<<左移运算符

>>右移运算符

~ 取反运算符

>>>无符号右移运算符
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • HashMap的扩容机制
      • Hashtable、HashMap和ConcurrentHashMap的异同
      • 迭代器
      • 参考地址
      • 笔记
        • 笔记1
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档