HashMap 源代码 | 学习笔记

简介: 快速学习 HashMap 源代码。

开发者学堂课程【Java面试疑难点串讲1:面试技巧及语言基础:HashMap 源代码】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/482


HashMap 源代码


内容介绍

1. HashMap

2. 代码示例


1. HashMap 类

HashMap 源代码没有什么特别多的关注点,主要需要从里面看出来以下几点:
Map.Entry 与 HashMap.Node 类;
static class Node implements Map.Entry{

在 HashMap 存储数据增加到一定数量的时候(阈值),那么就会由链表变为红黑树(类似于二分查找
的性能更快);.

阈值: static final int TREEIFY_ THRESHOLD = 8;超过了这个内容变为红黑树;

HashMap_里面对于数据的保存个数的扩充是按照倍数进行的,但是这里面有一个参考

static final float DEFAULTLOADFACTOR = 0.75f;

如果达到了16*0.75个数的时候会进行第一次的容量扩充

HashMap_里面的方法都是异步处理,属于非线程安全的。


2. 代码示例

import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[ ] args) throws Exception { Map map = new HashMap();

for (int x =  ; x < 10 ; x ++) { new .Thread(()->{ for( int y=0;y<3 ;y++){ map.put(Thread.currentThread().getName(),"y="+y); }).start( ) ; } }

出现错误

图片1.png此时会出现 “java.util.ConcurrentModificationException” 表示的就是存储个数和操作个数不同。





相关文章
java202303java学习笔记第三十二天HashMap的使用2
java202303java学习笔记第三十二天HashMap的使用2
41 0
java202303java学习笔记第三十二天HashMap的使用
java202303java学习笔记第三十二天HashMap的使用
48 0
java202303java学习笔记第三十二天HashMap的使用1
java202303java学习笔记第三十二天HashMap的使用1
42 0
java202303java学习笔记第三十二天HashMap的使用3
java202303java学习笔记第三十二天HashMap的使用3
42 0
java202303java学习笔记第三十二天hashMap源码解析4
java202303java学习笔记第三十二天hashMap源码解析4
61 0
java202303java学习笔记第三十二天hashMap源码解析1
java202303java学习笔记第三十二天hashMap源码解析1
57 0
java202303java学习笔记第三十二天hashMap源码解析2
java202303java学习笔记第三十二天hashMap源码解析2
50 0
java202303java学习笔记第三十二天hashMap源码解析3
java202303java学习笔记第三十二天hashMap源码解析3
51 0
java202303java学习笔记第三十二天hashMap源码解析5
java202303java学习笔记第三十二天hashMap源码解析5
48 0
java202303java学习笔记第三十二天hashMap源码解析6
java202303java学习笔记第三十二天hashMap源码解析6
57 0