hashmap的put方法解读
参考文章
https://www.cnblogs.com/captainad/p/10905184.html添加链接描述
public V put(K key, V value) {return putVal(hash(key), key, value, false, true);}
/*** Implements Map.put and related methods.** @param hash hash for key* @param key the key* @param value the value to put* @param onlyIfAbsent if true, don't change existing value* @param evict if false, the table is in creation mode.* @return previous value, or null if none*/final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {Node<K,V>[] tab; Node<K,V> p; int n, i;if ((tab = table) == null || (n = tab.length) == 0)n = (tab = resize()).length;if ((p = tab[i = (n - 1) & hash]) == null)tab[i] = newNode(hash, key, value, null);else {Node<K,V> e; K k;if (p.hash == hash &&((k = p.key) == key || (key != null && key.equals(k))))e = p;else if (p instanceof TreeNode)e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);else {for (int binCount = 0; ; ++binCount) {if ((e = p.next) == null) {p.next = newNode(hash, key, value, null);if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1sttreeifyBin(tab, hash);break;}if (e.hash == hash &&((k = e.key) == key || (key != null && key.equals(k))))break;p = e;}}if (e != null) { // existing mapping for keyV oldValue = e.value;if (!onlyIfAbsent || oldValue == null)e.value = value;afterNodeAccess(e);return oldValue;}}++modCount;if (++size > threshold)resize();afterNodeInsertion(evict);return null;}
hashmap的put方法解读相关推荐
- HashMap中ConcurrentModificationException异常解读
HashMap中ConcurrentModificationException异常解读 参考文章: (1)HashMap中ConcurrentModificationException异常解读 (2) ...
- HashMap的遍历方法
使用工具 IDEA2018.2 使用说明 使用迭代器,即创建Iterator对象,Iterator是一个接口,也有泛型 hasNext方法判断是否已经遍历完, next方法取当前遍历的对象 HashM ...
- HashMap的使用方法详解
HashMap是一种十分常用的数据结构对象,可以保存键值对,下面将详细介绍HashMap的使用方法. 一.添加方法 put方法,可以单次向HashMap中添加一个键值对. 注意:添加到Map中的数据, ...
- 遍历HashMap的最佳方法
遍历HashMap的最佳方法 @(JAVA)[java] stackoverflow上推荐的遍历hashMap的最佳方法: 详见github上的代码. package org.ljh.javademo ...
- java散列法的运用实例,Java HashMap compute() 使用方法及示例
Java HashMap compute() 使用方法及示例 Java HashMap compute()方法计算一个新值,并将其与哈希映射中的指定键相关联. compute()方法的语法为: has ...
- HashMap的put方法(Java7)和putVal方法(Java8)
目录 数组+链表:存在性能最坏情况O(n) Java7的HashMap的put方法思路 数组+链表+红黑树:性能提高到O(logn) Java8的HashMap的putVal方法思路 数组+链表:存在 ...
- HashMap的put方法返回值问题
API文档中的描述: 先看一个例子 Map<Character, Integer> map = new HashMap<Character, Integer>(); Syste ...
- java map isempty_Java HashMap isEmpty() 使用方法及示例
Java HashMap isEmpty() 使用方法及示例 Java HashMap isEmpty()方法检查哈希映射是否为空. isEmpty()方法的语法为: hashmap.isEmpty( ...
- 【知识蒸馏】什么是知识蒸馏、方法解读
[知识蒸馏]什么是知识蒸馏.方法解读 文章目录 [知识蒸馏]什么是知识蒸馏.方法解读 1. 前言 1.1 由来 1.2 定义 1.3 可蒸馏(迁移)的知识 2. 蒸馏方法介绍 2.1 知识的种类.蒸馏 ...
最新文章
- Spring MVC 过时了吗?
- Linux_学习_01_常用命令大全
- jquery plugins
- BOM+DOM+JavaScript读取与操作网页对象
- c语言中分数的类型,用C语言编程平均分数
- 网络协议:TCP可靠传输
- 编程之美——数字哑谜
- Linux基础之bash脚本编程初级-变量与算术运算
- nginx相关概念——正向代理和反向代理
- SQL float 保留两位小数
- dnf台服服务端php,单机版:台服DNF游戏源码+搭建教程
- ”炮灰“团队自主开发,未参考任何Ftp搜索引擎代码,留个纪念。
- Spring学习的书-夏昕(3)
- 信息 | 美国留学之计算机专业【转】
- 别说 Python 会生成二维码,Java也会。
- java 调用存储过程无反应_java调用存储过程无法取得返回参数
- Windows XP 共享 Workgroup无法访问.您可能没有权限使用网络资源
- css两个冒号什么意思
- c语言查找源字节是否含有子字节,36 R语言的文本处理 | R语言教程
- 基于HFS快速搭建HTTP文件服务器
热门文章
- S7-200SMART PLC ModbusTCP通信(ModbusTcp服务器)
- 共享单车项目数据分析报告
- 基于C语言的材料力学模型计算实现(弯曲应力篇)
- 长江商学院许成钢:人工智能从根本上是经济学模型
- 海尔破局之术:如何用2年时间拿下自清洁空调4成市场
- 模拟飞行入坑(三) P3Dsimconnect 两台电脑远程连接配置
- 达观数据推出​业内首个制造业失效分析知识图谱平台,赋能制造业迈向认知智能时代
- ——苹果AppStore被拒理由大全
- 学习excel基本操作——大厂周报(1)
- 内网安全-Docker逃逸DMZ穿透