勤劳的小蚂蚁 技术杂谈 HashMap是如何工作的 一、HashMap在JAVA中的怎么工作的? 基于Hash的原理 二、什么是哈希? 最简单形式的 hash,是一种在对任何变量/对象的属性应用任何公式/算法后, 为其分配唯一代码的方法。 一个真正的hash方法必须遵循下面 …
勤劳的小蚂蚁 技术杂谈 不止JDK7的HashMap,JDK8的ConcurrentHashMap也会造成CPU 100% 大家可能都听过JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死链,由此会在get时造成了CPU 100%。这个问题在JDK8中的HashMap获得了解决。其实JDK7中的HashMap在 …
勤劳的小蚂蚁 技术杂谈 HashMap的元素插入原理 HashMap 作为哈希表的Map接口实现,其具备以下几个特点: 和HashTable类似,采用数组+单链表形式存储元素,从jdk1.8开始,增加了红黑树的结构,当单链表中元素个数超过指定阈值,会转化为红黑树结构存 …
勤劳的小蚂蚁 技术杂谈 Java 集合框架面试问题集锦 Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题。很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性。下面是面试Java核心技术的一些很实用的问题。 Q:最常见的数据结构 …
勤劳的小蚂蚁 技术杂谈 HashMap为什么是线程不安全的? 一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来 …
勤劳的小蚂蚁 技术杂谈 Java HashMap 遍历方式性能探讨 关于HashMap的实现这里就不展开了,具体可以参考JDK7与JDK8中HashMap的实现。 https://my.oschina.net/hosee/blog/618953 JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来 …
勤劳的小蚂蚁 技术杂谈 Java中HashMap底层数据结构 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置, …
勤劳的小蚂蚁 技术杂谈 Java TreeMap 源码解析 这篇文章开始介绍Map系列另一个比较重要的类TreeMap。 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原因:一方面HashMap的使用场景比较多;二是相对于HashM …
勤劳的小蚂蚁 技术杂谈 集合系列—HashMap源码分析 前面我们已经分析了ArrayList和LinkedList这两个集合,我们知道ArrayList是基于数组实现的,LinkedList是基于链表实现的。它们各自有自己的优劣势,例如ArrayList在定位查找元素时会优于LinkedList,而Link …
勤劳的小蚂蚁 技术杂谈 一文读懂HashMap HashMap源码分析 构造函数 让我们先从构造函数说起,HashMap有四个构造方法,别慌 1.1 HashMap() // 1.无参构造方法、 // 构造一个空的HashMap,初始容量为16,负载因子为0.75 publicHashMap(){ this.lo …
勤劳的小蚂蚁 技术杂谈 为什么HashMap要自己实现writeObject和readObject方法? 前言 如果你有仔细阅读过HashMap的源码,那么你一定注意过一个问题:HashMap中有两个私有方法。 privatevoid writeObject(java.io.ObjectOutputStream s) throwsIOException privatevoid readObject(java.i …
勤劳的小蚂蚁 技术杂谈 Java HashMap 源码解析 本文源码分析基于Oracle JDK 1.7.0_71,请知悉。 $ java –version java version“1.7.0_71” Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM ( …