HashMap源代码|学习笔记

简介: 快速学习HashMap源代码

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

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

HashMap源代码


内容介绍

1. HashMap

2. 代码示例


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

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

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

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

static final float DEFAULTLOADFACTOR = 0.75f;

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

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

import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[ ] args) throws Exception {
Map<String, string> map = new HashMap<string,string>();
for (int x =  ; x < 10 ; x ++) {
new .Thread(()->{
for( int y=0;y<3 ;y++){
map.put(Thread.currentThread().getName(),"y="+y);
}).start( ) ;
}
}

出现错误

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

相关文章
java202303java学习笔记第三十二天HashMap的使用2
java202303java学习笔记第三十二天HashMap的使用2
44 0
java202303java学习笔记第三十二天HashMap的使用
java202303java学习笔记第三十二天HashMap的使用
51 0
java202303java学习笔记第三十二天HashMap的使用1
java202303java学习笔记第三十二天HashMap的使用1
44 0
java202303java学习笔记第三十二天HashMap的使用3
java202303java学习笔记第三十二天HashMap的使用3
46 0
java202303java学习笔记第三十二天hashMap源码解析4
java202303java学习笔记第三十二天hashMap源码解析4
66 0
java202303java学习笔记第三十二天hashMap源码解析1
java202303java学习笔记第三十二天hashMap源码解析1
60 0
java202303java学习笔记第三十二天hashMap源码解析2
java202303java学习笔记第三十二天hashMap源码解析2
54 0
java202303java学习笔记第三十二天hashMap源码解析3
java202303java学习笔记第三十二天hashMap源码解析3
55 0
java202303java学习笔记第三十二天hashMap源码解析5
java202303java学习笔记第三十二天hashMap源码解析5
51 0
java202303java学习笔记第三十二天hashMap源码解析6
java202303java学习笔记第三十二天hashMap源码解析6
61 0