前言
Java的HashMap学习笔记
继承结构
graph TD
Object --> AbstractMap
AbstractMap --> HashMap
Map --> HashMap
style Object fill:#f0f8ff,stroke:#696969
style AbstractMap fill:#f0f8ff,stroke:#696969
style HashMap fill:#f0f8ff,stroke:#696969
style Map fill:#f0f8ff,stroke:#4169e1
创建对象
1
| HashMap<Object, Object> map = new HashMap<>();
|
Map的相关方法
添加或修改元素
- 返回上一次添加或修改的元素,如果是首次添加或修改元素,则返回null
1
| Object value = map.put(<key>, <value>);
|
批量添加或修改元素
如果键不存在就添加元素
- 返回上一次添加或修改的元素,如果是首次添加或修改元素,则返回null
1
| Object value = map.putIfAbsent(<key>, <value>);
|
删除元素
根据键删除元素
删除所有元素
获取元素
根据键获取值
1
| Object value = map.get(<key>);
|
如果键不存在就返回默认值
1
| Object value = map.getOrDefault(<key>, <default_value>);
|
获取所有键
1
| Set<Object> keys = map.keySet();
|
获取所有值
1
| Collection<Object> values = map.values();
|
获取所有键值对
1
| Set<Map.Entry<Object, Object>> entries = map.entrySet();
|
获取长度
1
| int length = map.size();
|
集合判断
判断集合是否为空
1
| boolean isEmpty = map.isEmpty();
|
判断集合中是否包含指定键
1
| boolean exist = map.containsKey(<key>);
|
判断集合中是否包含指定值
1
| boolean exist = map.containsValue(<value>);
|
替换元素
如果键存在就替换元素
- 返回上一次添加或修改的元素,如果是首次替换元素,则返回null
1
| Object value = map.replace(<key>, <value>);
|
计算元素
1 2 3
| Object value = map.compute(<key>, (oldKey, oldValue) -> { return <value>; });
|
如果键不存在就计算元素
1 2 3
| Object value = map.computeIfAbsent(<key>, (oldKey) -> { return <value>; });
|
合并元素
1 2 3
| Object value = map.merge(<key>, <value>, (oldValue, newValue) -> { return <value>; })
|
映射遍历
通过for…each语法遍历
1 2 3 4
| for (Map.Entry<Object, Object> entry : map.entrySet()) { Object key = entry.getKey(); Object value = entry.getValue(); }
|
1 2 3
| for (Object key : map.keySet()) { Object value = map.get(key); }
|
通过forEach方法遍历
1 2 3
| map.forEach((key, value) -> { ... });
|
完成