V merge(K key, V value, BiFunction remappingFunction)
public static void mergeMap(Map<String,Integer> mainMap,
Map<String,Integer> childMap)
{  
    childMap.forEach((key,value)->mainMap.merge(key,value,Integer::sum));  
}

这是一种写法用来不断更新key对应的value值,mainMap是主要的一个Map,而childMap是用来给mainMap更新数据用的数据集。

添加和修改数据

访问和获取数据

V getOrDefault(Object key, V defaultValue)

// 假设 map 中没有 "user.email"
String email = map.getOrDefault("user.email", "default@example.com");
// email 会得到 "default@example.com"

检查 Map 的状态

删除数据

遍历 Map (非常重要)

你不能像遍历 List 那样直接遍历 Map,但有三种主要的方式来获取 Map 里的内容:

  1. 遍历所有的键 (Keys)keySet()

    • 获取一个包含所有 keySet 集合,然后你可以遍历这个 Set,并使用 get() 来获取每个 value
    // map 中有 "user.name" -> "Bob"
    for (String key : map.keySet()) {
        String value = map.get(key);
        System.out.println("键: " + key + ", 值: " + value);
    }
    // 输出: 键: user.name, 值: Bob
    
  2. 遍历所有的值 (Values)values()

    • 获取一个包含所有 valueCollection 集合。这在你只关心值,不关心键的时候很有用。
    for (String value : map.values()) {
        System.out.println("值: " + value);
    }
    // 输出: 值: Bob
    
  3. 遍历所有的键值对 (Entries)entrySet() (最高效的方式)

    • 这是最推荐的遍历方式。它获取一个包含所有“键值对”对象(Map.Entry)的 Set 集合。

    • Map.Entry 对象有 .getKey().getValue() 两个方法。

    for (Map.Entry<String, String> entry : map.entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue();
        System.out.println("键: " + key + ", 值: " + value);
    }
    // 输出: 键: user.name, 值: Bob
    
    • Map.Entry<K,V>是nested interface,nested interface意思就是一个interface里嵌套一个interface,类似于SuperClass里有个SubClass。