【笔记】Java的HashMap

前言

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>);

批量添加或修改元素

1
map.putAll(<Map>);

如果键不存在就添加元素

  • 返回上一次添加或修改的元素,如果是首次添加或修改元素,则返回null
1
Object value = map.putIfAbsent(<key>, <value>);

删除元素

根据键删除元素

1
map.remove(<key>);

删除所有元素

1
map.clear();

获取元素

根据键获取值

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) -> {
...
});

完成