HashMap方法总结
HashMap 方法总结
- HashMap继承关系
- HashMap常见方法
- HashMap全部方法简介
HashMap继承关系
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap常见方法
put - 添加新的键值对
// 实例HashMap
public static HashMap<Integer, String> createItSHashMap() {
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1,"a");
hashMap.put(2,"bcd");
hashMap.put(3,"hello");
hashMap.put(4,"IZONKUN");
hashMap.put(5,"world");
hashMap.put(6,"a");
return hashMap;
}
public static HashMap<String, String> createStSHashMap() {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("fir","a");
hashMap.put("sec","b");
hashMap.put("the","c");
hashMap.put("fou","d");
hashMap.put("fiv","e");
hashMap.put("six","f");
return hashMap;
}
// 源码方法
public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}
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 1st
treeifyBin(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 key
V oldValue = e.value;
if (!onlyIfAbsent || oldValue == null)
e.value = value;
afterNodeAccess(e);
return oldValue;
}
}
++modCount;
if (++size > threshold)
resize();
afterNodeInsertion(evict);
return null;
}
containsKey - 查看是否包含键
// 输入参数:E Key是什么类型就输入什么类型
public static void main(String[] args){
HashMap<String,String> arrayList = createStSHashMap();
System.out.println(arrayList.containsKey("fir"));
}
// 返回值 boolean
true
// 源码方法
public boolean containsKey(Object key) {
return getNode(hash(key), key) != null;
}
final Node<K,V> getNode(int hash, Object key) {
Node<K,V>[] tab; Node<K,V> first, e; int n; K k;
if ((tab = table) != null && (n = tab.length) > 0 &&
(first = tab[(n - 1) & hash]) != null) {
if (first.hash == hash && // always check first node
((k = first.key) == key || (key != null && key.equals(k))))
return first;
if ((e = first.next) != null) {
if (first instanceof TreeNode)
return ((TreeNode<K,V>)first).getTreeNode(hash, key);
do {
if (e.hash == hash &&
((k = e.key) == key || (key != null && key.equals(k))))
return e;
} while ((e = e.next) != null);
}
}
return null;
}
containsValue - 查看是否包含值
// 输入参数:E value是什么类型就输入什么类型
public static void main(String[] args){
HashMap<String,String> arrayList = createStSHashMap();
System.out.println(arrayList.containsValue("b"));
}
// 返回值 boolean
true
// 源码方法
public boolean containsValue(Object value) {
Node<K,V>[] tab; V v;
if ((tab = table) != null && size > 0) {
for (Node<K,V> e : tab) {
for (; e != null; e = e.next) {
if ((v = e.value) == value ||
(value != null && value.equals(v)))
return true;
}
}
}
return false;
}
get - 获取对应值
getOrDefault - 获取对应值或获取默认值
replace - 更改映射
isEmpty - 判空
clone - 拷贝一份hashMap
HashMap全部方法简介
方法 | 描述 |
---|---|
clear() | 删除hashMap中的所有键/值对 |
clone() | 复制一份hashMap |
isEmpty() | 判断hashMap是否为空 |
size() | 计算hashMap中键/值对的数量 |
put() | 将键/值对添加到hashMap中 |
putAll() | 将所有键/值对添加到hashMap中 |
putIfAbsent() | 如果hashMap中不存在指定的键,则将指定的键/值对插入 |
remove() | 删除hashMap中指定键key的映射关系 |
containsKey() | 检查hashMap中是否存在指定key对应的映射关系 |
containsValue() | 检查hashMap中是否存在指定value对应的映射关系 |
replace() | 替换hashMap中是指定的Key对应的value |
replaceAll() | 将hashMap中所有的映射关系替换成给定函数所执行的结果 |
get() | 获得指定key对应的value |
getOrDefault() | 获取指定key对应的value,如果找不到key,则返回设置的默认值 |
forEach() | 对hashMap中每个映射执行指定的操作 |
entrySet() | 返回hashMap中所有映射项的集合视图 |
keySet() | 返回hashMap中所有key组成的集合视图 |
values() | 返回hashMap中存在的所有value值 |
merge() | 添加键值对到hashMap中 |
compute() | 对hashMap中指定key的值进行重新计算 |
computeIfAbsent() | 对hashMap指定的key的值进行重新计算,如果不存在这个key,则添加到hashMap中 |
computeIfPresent() | 对hashMap中指定key的值进行重新计算,前提是该key存在于hashMap中 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT蛋的个人博客!