在Map界面中使用Java 8中引入的默认方法的示例
使用getOrDefault
返回映射到键的值,或者如果键不存在,则返回默认值
Map<Integer, String> map = new HashMap<>(); map.put(1, "First element"); map.get(1); // => First element map.get(2); // => null map.getOrDefault(2, "Default element"); // => Default element
使用forEach
允许在每个映射条目上执行“操作”中指定的操作
Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); map.forEach((key, value) -> System.out.println("Key: "+key+ " :: Value: "+value)); // 键:1 ::值:1 // 键:2 ::值:两个 // 键:3 ::值:三
使用replaceAll
仅当存在键时才用新值替换
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.replaceAll((key,value)->value+10); //{john = 30,paul = 40,peter = 50}
使用putIfAbsent
如果键不存在或映射为null,则将键-值对添加到映射
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.putIfAbsent("kelly", 50); //{john = 20,paul = 30,peter = 40,kelly = 50}
使用删除
仅在键与给定值相关联时才删除键
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("john", 20);
map.put("paul", 30);
map.put("peter", 40);
map.remove("peter",40); //{john = 30,paul = 40}
使用替换
如果存在键,则该值将被新值替换。如果密钥不存在,则不执行任何操作。
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.replace("peter",50); //{john = 20,paul = 30,peter = 50} map.replace("jack",60); //{john = 20,paul = 30,peter = 50}
使用computeIfAbsent
此方法在映射中添加一个条目。键是在函数中指定的,值是应用映射函数的结果
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.computeIfAbsent("kelly", k->map.get("john")+10); //{john = 20,paul = 30,peter = 40,kelly = 30} map.computeIfAbsent("peter", k->map.get("john")+10); //{john = 20,paul = 30,peter = 40,kelly = 30} //彼得已经在场
使用computeIfPresent
此方法在Map中添加条目或修改现有条目。如果不存在带有该键的条目,则不执行任何操作
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.computeIfPresent("kelly", (k,v)->v+10); //{john=20, paul=30, peter=40} //凯利不存在 map.computeIfPresent("peter", (k,v)->v+10); //{john = 20,paul = 30,peter = 50} // 彼得存在,所以增加价值
使用计算
此方法用新计算的值替换键的值
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); map.compute("peter", (k,v)->v+50); //{john=20, paul=30, peter=90} //增加价值
使用合并
如果键不存在或键的值为null,则将键值对添加到映射中;如果键存在,则将值替换为新计算的值;如果键存在,则将键值从映射中移除;如果计算的新值为null
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("john", 20); map.put("paul", 30); map.put("peter", 40); //如果键不存在或键的值为null,则将键值对添加到映射中 map.merge("kelly", 50 , (k,v)->map.get("john")+10); // {john = 20,paul = 30,peter = 40,kelly = 50} //如果存在密钥,则用新计算的值替换该值 map.merge("peter", 50 , (k,v)->map.get("john")+10); //{john = 20,paul = 30,peter = 30,kelly = 50} //如果计算的新值为null,则从映射中删除键 map.merge("peter", 30 , (k,v)->map.get("nancy")); //{john = 20,paul = 30,kelly = 50}