Map-Resize | 学习笔记

简介: 快速学习 Map-Resize。

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

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


Map-Resize


内容介绍

一、 Map-Resize


一、 Map-Resize

HishMap 需要 resize 时扩容因子是如何得到的?

如果要想解决这个问题还是需要去进行源代码的深入研究,也就是说对于基本的数据结构(类集)。

在进行数据添加的时候这个里面存在有一个 put() 方法。

public V put(K key,V value) {

return putVal(hash(key),key,value,false,true);

}

put() 方法里面可以发现有一个 putVal() 方法,而且可以发现这个方法首先进行了hash 计算(查找),而后在这个方法的实现定义。

if(oldCap>0) {

if(oldCap>=MAXIMUM_CAPACITY) {    //是否大于了最大的容量

threshold=Integer.MAX_VALUE;      //将其设置为整型最大

return oldTab;

}                                   //如果没有超过容量

else if((newCap=oldCap<<1)

oldCap>=DEFAULT_INITIAL_CAPACITY)

newThr=oldThr<<1; // double threshold

}

else if(oldThr>0) // initial capacity was placed in threshold

newCap=oldThr;

else {             // zero initial threshold signifies using defaults

newCap=DEFAULT_INITIAL_CAPACITY;

newThr=(int)(DEFAULT_LOAD_FACTOR*DEFAULT_INITIAL_CAPACITY);

}

它的容量扩充指的是一开始放30个,如果发现不够了,则进行移位处理,30*2,那么再一次扩充30*2*2

相关文章
|
9月前
|
存储 算法 C++
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
563 1
|
C++
Leetcode Copy List with Random Pointer(面试题推荐)
给大家推荐一道leetcode上的面试题,这道题的具体讲解在《剑指offer》的P149页有思路讲解,如果你手头有这本书,建议翻阅。
59 0
|
Java 测试技术 Android开发
“ const”和“ val”有什么区别?
“ const”和“ val”有什么区别?
214 0
|
4月前
|
Java
让星星⭐月亮告诉你,Java NIO之Buffer详解 属性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()
这段代码演示了Java NIO中`ByteBuffer`的基本操作,包括分配、写入、翻转、读取、压缩和清空缓冲区。通过示例展示了`position`、`limit`和`mark`属性的变化过程,帮助理解缓冲区的工作原理。
58 2
|
存储 Cloud Native Linux
C++ vector中reserve和resize区别
C++ vector中reserve和resize区别
|
存储 测试技术 C++
map + function 实现替代if - else
代码更简洁:使用map + function可以将多个if-else语句转化为一行代码,使得代码看起来更加简洁易懂。 可读性更好:使用map + function可以将判断逻辑抽象成函数,让代码更具可读性和可维护性。
102 0
|
9月前
实现array.slice()方法
实现array.slice()方法
|
JSON 数据格式
【jmespath】—2. 进阶 List and Slice Projections
【jmespath】—2. 进阶 List and Slice Projections
【jmespath】—2. 进阶 List and Slice Projections
|
Java 开发者
Map-Resize | 学习笔记
快速学习 Map-Resize。
126 0
|
存储 缓存 NoSQL
Java 8 ArrayList hugeCapacity 函数与 MAX_ARRAY_SIZE
Java 8 ArrayList hugeCapacity 函数与 MAX_ARRAY_SIZE
391 0
Java 8 ArrayList hugeCapacity 函数与 MAX_ARRAY_SIZE