java中HashMap常用api
增 / 改 (Create / Update)
| API 方法 | 描述 | 备注 |
|---|---|---|
put(key, value) |
存入键值对。如果 key 已存在,覆盖旧值。 | 最常用 |
putIfAbsent(key, value) |
只有当 key 不存在时才存入。 | 避免覆盖 |
getOrDefault(key, default) |
获取值,若 key 不存在则返回默认值。 | 统计频率必备 |
查 (Read)
| API 方法 | 描述 | 备注 |
|---|---|---|
get(key) |
获取 value。如果不包含该 key,返回 null。 |
注意判空 |
containsKey(key) |
判断 map 中是否有这个 key。 | 返回 boolean |
containsValue(value) |
判断 map 中是否有这个 value。 | 较慢,O(N) |
size() |
返回键值对的数量。 | |
isEmpty() |
判断是否为空。 |
删 (Delete)
| API 方法 | 描述 | 备注 |
|---|---|---|
remove(key) |
删除该 key 及其对应的 value。 | |
clear() |
清空 map 中所有数据。 |
遍历 (Iterate)
方式 1:遍历 Key (最简单)
for (Integer key : map.keySet()) {
int value = map.get(key); // 再取一次值
System.out.println(key + " -> " + value);
}
Java
for (Integer key : map.keySet()) {
int value = map.get(key); // 再取一次值
System.out.println(key + " -> " + value);
}
方式 2:遍历 Entry (效率最高,推荐) 如果你同时需要 key 和 value,建议用这个,比方式 1 少一次哈希查找。
// Map.Entry<K, V> 就像 C++ 的 pair
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
Java
// Map.Entry<K, V> 就像 C++ 的 pair
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
方式 3:只遍历 Value
for (Integer val : map.values()) {
System.out.println(val);
}
有序 vs 无序:
HashMap: 无序,\(O(1)\),对应 C++unordered_map(最常用)。TreeMap: 按 Key 排序,\(O(\log N)\),对应 C++map。
Java
for (Integer val : map.values()) {
System.out.println(val);
}
💬 评论