Java面试必问之Hashmap底层实现原理(JDK1.7)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Java面试必问之Hashmap底层实现原理(JDK1.7)

当我遇上你csy   2020-03-05 我要评论
# 1. 前言 Hashmap可以说是Java面试必问的,一般的面试题会问: * Hashmap有哪些特性? * Hashmap底层实现原理(get\put\resize) * Hashmap怎么解决hash冲突? * Hashmap是线程安全的吗? * ... 今天就从源码角度一探究竟。笔者的源码是OpenJDK1.7 # 2. 构造方法 首先看构造方法的源码 ```java // 默认初始容量 static final int DEFAULT_INITIAL_CAPACITY = 16; // 默认负载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; // 数组, 该数据不参与序列化 transient Entry[] table; public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // 初始容量16,扩容因子0.75,扩容临界值12 threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR); // 基础结构为Entry数组 table = new Entry[DEFAULT_INITIAL_CAPACITY]; init(); } ``` 由以上源码可知,Hashmap的初始容量默认是16, 底层存储结构是数组(到这里只能看出是数组, 其实还有链表,下边看源码解释)。基本存储单元是Entry,那Entry是什么呢?我们接着看Entry相关源码, ```java static class Entry

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们