Java 中的 Map
接口是 Java 集合框架的一部分,用于存储键值对(key-value pairs)。下面是 Map
接口中一些常用的 API 方法及其用法:
添加和删除元素
-
put(K key, V value) - 将指定的键值对添加到此映射中。
map.put("key", "value");
-
remove(Object key) - 移除指定键的映射关系。
map.remove("key");
-
remove(Object key, Object value) - 如果给定键对应的值等于给定值,则移除此映射。
map.remove("key", "value");
-
replace(K key, V value) - 替换指定键的值。
map.replace("key", "newValue");
-
replace(K key, V oldValue, V newValue) - 当且仅当指定键映射到给定旧值时,替换该键的新值。
map.replace("key", "oldValue", "newValue");
获取元素
-
get(Object key) - 返回指定键对应的值;如果不存在,则返回 null。
String value = map.get("key");
-
getOrDefault(Object key, V defaultValue) - 返回指定键对应的值;如果不存在,则返回默认值。
String value = map.getOrDefault("key", "defaultValue");
查看映射信息
-
isEmpty() - 如果此映射不包含任何键值对,则返回 true。
boolean empty = map.isEmpty();
-
size() - 返回此映射中的键值对数。
int size = map.size();
-
containsKey(Object key) - 如果此映射包含指定键的映射关系,则返回 true。
boolean containsKey = map.containsKey("key");
-
containsValue(Object value) - 如果此映射包含至少一个指定值的映射关系,则返回 true。
boolean containsValue = map.containsValue("value");
获取集合视图
-
keySet() - 返回此映射中包含的所有键的集合视图。
Set<String> keys = map.keySet();
-
values() - 返回此映射中包含的所有值的集合视图。
Collection<String> values = map.values();
-
entrySet() - 返回此映射中存在的键值对映射关系的集合视图。
Set<Map.Entry<String, String>> entries = map.entrySet();
其他操作
-
clear() - 移除此映射中的所有映射关系。
map.clear();
-
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) - 如果指定键没有映射到值,则计算其值并将其映射到指定键。
String value = map.computeIfAbsent("key", k -> "defaultValue");
-
computeIfPresent(K key, BiFunction<K,V, V> remappingFunction) - 如果当前存在从键到值的映射关系,则应用函数到键及其当前映射值,并将结果替换为当前值。
String value = map.computeIfPresent("key", (k, v) -> v.equals("oldValue") ? "newValue" : null);
-
forEach(BiConsumer<? super K, ? super V> action) - 对每个映射关系执行指定的操作。
map.forEach((k, v) -> System.out.println(k + ": " + v));
-
replaceAll(BiFunction<? super K, ? super V, ? extends V> function) - 用给定函数应用于每个条目的结果替换此映射中的每个条目。
map.replaceAll((k, v) -> v.toUpperCase());
其他高级特性
- merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) - 如果(且仅当)已存在从指定键到非 null 值的映射关系,则对该值以及给定值应用给定的重新映射函数,并将结果替换为当前值。
map.merge("key", "newValue", Integer::sum);
这些方法涵盖了 Map
接口中大多数常见的操作。需要注意的是,不同的 Map
实现类(如 HashMap
, TreeMap
, LinkedHashMap
等)可能会有不同的性能特点和附加方法。在实际使用时,请参考具体的实现类文档。