问:简单说说 HashMap 为什么是线程不安全的?具体体现在哪些方面? 答:对于 JDK1.7 和 JDK1.8 的 HashMap 中迭代器的 fail-fast 策略导致了并发不安全,即如果在使用迭代器的过程中有其…
标签:hashmap
JAVA非并发容器--HashMap-迭代器
概述 我相信只要写过JAVA的程序要拿99%的都用过HashMap, 其是我们最常用,也是最基础的一个Map.本篇文章将从存储结构、hash规则、扩容策略、迭代器四方面来分析其源代码。 HashMap的迭代起需要记住几个…
hashtable与hashmap区别
HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 H…
JDK1.7 HashMap扩容:多线程下的死循环和丢失
多线程情况下,HashMap扩容可能会形成死循环情况,或者丢失值。 假设: 三个Entity,rehash后key值分别为3、5、7。 如图: init.png JDK 1.7 HashMap扩容时关键代码: void …
TypeScript使用HashMap
我不知道大家是怎么使用索引类型的,我是一次想实现HashMap时接触到了索引类型。 索引类型大约是这样的: { [idx: string|number]:any } 方括号里面是索引的类型,类似于hashmap里面的ke…
图解HashMap
什么是HashMap,文章内HashMap源码主要来自Android 7.0 HashMap是开发中常用的一个类,那么他究竟是什么呢? HashMap是一个存储key-value的集合,底层实现的是数组,所以可以看作Ha…
HashMap的工作原理
本文由 ImportNew 唐小娟 翻译自 Javarevisited。欢迎加入翻译小组。转载请见文末要求。 HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要…
Java集合--HashMap解惑
3 Map 昨晚去了鸟巢,膜拜了5位40多岁的大爷们。算上这次,已是第三回了,每一次都有不同的感受、体验。期待,下一次的相遇。 说正题前,先附一张昨晚演唱会的图片! 今天,笔者要介绍的是Java集合框架中的Map集合,在…
HashMap工作原理
相信大家不管是在Java还是安卓面试过程中,或多或少都会被问及HashMap的工作原理,小编今天大概看了一下Android中HashMap的源码,将结果整理如下,如有不对之处请批评指正: 一、HashMap的数据结构 其…
HashMap面试题:90%的人回答不上来
我们希望候选者具有手动实现HashMap的能力;研究过JDK中HashMap的源代码,以及不同版本JDK中使用的优化机制。 在java面试中集合类似乎已经是绕不开的话题,对于一个中高级java程序员来说如果对集合类的内部…
JDK1.7-HashMap源码分析
如果我在介绍集合的时候不介绍HashMap我相信一定会有人觉得我是个奇葩。毕竟是这么这么重要的类嘛。本篇开始进入Map阶段,相应地会提到HashMap,ConcurrentHashMap,TreeMap等。作为实习以及平…
Java 8中HashMap和LinkedHashMap如何解决冲突
在Java 8 之前,HashMap和其他基于map的类都是通过链地址法解决冲突,它们使用单向链表来存储相同索引值的元素。在最坏的情况下,这种方式会将HashMap的get方法的性能从O(1)降低到O(n)。为了解决在频…