
HashMap
小小大侠客
用技术改变世界,用代码改变命运!
展开
-
为什么HashMap是非线程安全的?
HashTable是线程安全的,因为里面的方法使用了synchronized进行同步。但是HashMap为什么是非线程安全的呢?难道仅仅就是因为内部的方法没有synchronized关键字修饰吗?这篇文章主要来分析一下原因。我们知道HashMap底层是一个Entry数组,当发生hash冲突的时候,HashMap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。1、 HashMap 在插入的时候现在假如 A 线程和 B 线程同时进行插入操作,然后计算出原创 2020-06-02 14:28:27 · 687 阅读 · 0 评论 -
HashMap的数据结构存储过程和扩容机制
1、HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。JDK1.8之前HashMap由数组+链表组成的,数组是HashMap的主体,链表则是为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”)解决冲突。JDK1.8之后在解决哈希冲突时有了较大的变化,当链原创 2020-05-24 16:09:47 · 1567 阅读 · 0 评论