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。

            </div>
相关文章
|
10月前
|
存储 算法 C++
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
612 1
|
9月前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
8月前
|
索引
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
ArrayList集合常用方法,.set可以用来生成图片和赋值命名,array.remove(1),array.set(1,“xxxx”)可以修改指定位置,array.size可以获取元素的个数
|
存储 Cloud Native Linux
C++ vector中reserve和resize区别
C++ vector中reserve和resize区别
|
JSON 数据库 数据格式
Map和List的碰撞
Map和List的碰撞
65 0
|
存储 自然语言处理
Ananagrams(map+vector)
Ananagrams(map+vector)
130 0
List,Map 三种遍历方式:(总结理解)
List,Map 三种遍历方式:(总结理解)
101 0
|
C++
C++中Vector/Map/List中尽量使用指针,避免直接保存对象
C++中Vector/Map/List中尽量使用指针,避免直接保存对象
520 0
|
Java API Apache
List 转 Map, 齐活!(二)
大家好,我是指北君。 在我们平时的工作中,充满了各种类型之间的转换。今天指北君带大家上手 List 转 Map 的各种操作。 我们将假设 List 中的每个元素都有一个标识符,该标识符将在生成的 Map 中作为一个键使用。
List 转 Map, 齐活!(二)