共同学习Java源代码-数据结构-HashMap(十一)
来源:互联网 发布:天猫是淘宝旗下的吗 编辑:程序博客网 时间:2024/06/10 22:23
public V getOrDefault(Object key, V defaultValue) {
Node<K,V> e;
return (e = getNode(hash(key), key)) == null ? defaultValue : e.value;
}
这个方法是获取值且在没有取到值的时候,返回默认值的方法
实现很简单 就是先将key的哈希值和key本身传入getNode方法 判断返回值是否为空 如果为空就返回参数的默认值 否则就返回方法返回值
@Override
public V putIfAbsent(K key, V value) {
return putVal(hash(key), key, value, true, true);
}
这个方法是put方法的变种 就是在键不存在的时候 才会添加进键值对 具体的实现就是调用putVal方法 将onlyIfAbsent参数设为true即可
@Override
public boolean remove(Object key, Object value) {
return removeNode(hash(key), key, value, true, true) != null;
}
这个方法是删除键值对的方法 在键和值都匹配的情况下 才会删除 调用的是removeNode方法
@Override
public boolean replace(K key, V oldValue, V newValue) {
Node<K,V> e; V v;
if ((e = getNode(hash(key), key)) != null &&
((v = e.value) == oldValue || (v != null && v.equals(oldValue)))) {
e.value = newValue;
afterNodeAccess(e);
return true;
}
return false;
}
这个方法是将键值对的值替换为新值的方法
首先判断键是否存在 且键对应的值和参数传进来的值是否一致 如果都成立 就将键的值赋为新值并返回true afterNodeAccess方法为空实现
如果不成立 就返回false
@Override
public V replace(K key, V value) {
Node<K,V> e;
if ((e = getNode(hash(key), key)) != null) {
V oldValue = e.value;
e.value = value;
afterNodeAccess(e);
return oldValue;
}
return null;
}
这个方法和上面的类似 只是不需要判断键对应的值和参数传进来的值是否一致 直接覆盖
- 共同学习Java源代码-数据结构-HashMap(十一)
- 共同学习Java源代码-数据结构-HashMap(一)
- 共同学习Java源代码-数据结构-HashMap(二)
- 共同学习Java源代码-数据结构-HashMap(三)
- 共同学习Java源代码-数据结构-HashMap(四)
- 共同学习Java源代码-数据结构-HashMap(五)
- 共同学习Java源代码-数据结构-HashMap(六)
- 共同学习Java源代码-数据结构-HashMap(七)
- 共同学习Java源代码-数据结构-HashMap(八)
- 共同学习Java源代码-数据结构-HashMap(九)
- 共同学习Java源代码-数据结构-HashMap(十)
- 共同学习Java源代码-数据结构-HashMap(十二)
- 共同学习Java源代码-数据结构-HashMap(十三)
- 共同学习Java源代码-数据结构-HashMap(十四)
- 共同学习Java源代码-数据结构-HashMap(十五)
- 共同学习Java源代码-数据结构-HashMap(十六)
- 共同学习Java源代码-数据结构-HashMap(十七)
- 共同学习Java源代码-数据结构-HashMap(十八)
- ROS学习笔记4 计算图源命名
- [DP+AC自动机] BZOJ1212: [HNOI2004]L语言
- 本文以Qt 5.9.1+VS2015编译环境为例介绍应用程序发布流程,也适用于Qt+mingw的情况。
- 利用openssl库实现BIO加密
- php 利用debug_backtrace方法跟踪代码调用
- 共同学习Java源代码-数据结构-HashMap(十一)
- 文章标题
- HDOJ1008 Elevator
- numpy小记,复制array
- 习题6.12
- 【面经】前车之鉴
- int int& int * int**的区别、联系和用途
- webstorm 2017 激活破解
- 机器学习——神经网络学习笔记