揭开Java8 Map集合put()、compute()和getOrDefault()新方法的面纱
2023-12-15 16:20:58
引言:Java8 Map集合的新成员
随着Java8的发布,Map集合迎来了三名新成员:put()、compute()和getOrDefault()方法。这些方法的加入,不仅丰富了Map集合的功能,也为Java开发人员提供了更加灵活和便捷的操作方式。本文将一一介绍这三个方法,并通过示例演示它们的用法。
一、put()与putIfAbsent():在Map中添加元素
-
put()方法:
put()方法用于在Map中添加一个键值对。如果Map中已经存在该键,则会替换原有值并返回旧值;如果不存在,则添加新的键值对并返回null。
Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("Apple", 10); map.put("Orange", 20); // 获取并打印旧值 Integer oldValue = map.put("Apple", 30); System.out.println("Old value for 'Apple': " + oldValue); // 输出:10 // 打印Map中的所有键值对 System.out.println(map); // 输出:{Apple=30, Orange=20}
-
putIfAbsent()方法:
putIfAbsent()方法与put()方法类似,但它只会在Map中不存在该键时才添加键值对。如果Map中已经存在该键,则不会做任何操作并返回原有值。
Map<String, Integer> map = new HashMap<>(); // 尝试添加键值对 Integer result = map.putIfAbsent("Apple", 10); // 检查添加结果 if (result == null) { System.out.println("New key-value pair added."); } else { System.out.println("Key already exists."); } // 打印Map中的所有键值对 System.out.println(map); // 输出:{Apple=10}
二、compute()与computeIfAbsent():计算并更新元素
-
compute()方法:
compute()方法用于计算并更新Map中的一个键值对。它接收两个参数:键和一个Function对象。Function对象负责计算新的值。如果Map中存在该键,则使用Function对象计算新的值并替换原有值;如果不存在,则使用Function对象计算新的值并添加新的键值对。
Map<String, Integer> map = new HashMap<>(); // 使用compute()方法计算并更新值 Integer newValue = map.compute("Apple", (key, value) -> { if (value == null) { return 10; // 初始值 } else { return value + 5; // 增加5 } }); // 打印更新后的值 System.out.println("Updated value for 'Apple': " + newValue); // 输出:10 // 打印Map中的所有键值对 System.out.println(map); // 输出:{Apple=10}
-
computeIfAbsent()方法:
computeIfAbsent()方法与compute()方法类似,但它只会在Map中不存在该键时才计算并添加新的键值对。如果Map中已经存在该键,则不会做任何操作并返回原有值。
Map<String, Integer> map = new HashMap<>(); // 使用computeIfAbsent()方法计算并添加值 Integer result = map.computeIfAbsent("Apple", key -> { return 10; // 初始值 }); // 检查添加结果 if (result == null) { System.out.println("New key-value pair added."); } else { System.out.println("Key already exists."); } // 打印Map中的所有键值对 System.out.println(map); // 输出:{Apple=10}
三、getOrDefault():获取值或默认值
getOrDefault()方法用于获取Map中的一个键所对应的值。如果Map中存在该键,则返回该键所对应的值;如果不存在,则返回一个默认值。
Map<String, Integer> map = new HashMap<>();
// 使用getOrDefault()方法获取值或默认值
Integer value = map.getOrDefault("Apple", 0);
// 打印获取到的值
System.out.println("Value for 'Apple': " + value); // 输出:0
// 添加键值对
map.put("Apple", 10);
// 再次使用getOrDefault()方法获取值或默认值
value = map.getOrDefault("Apple", 0);
// 打印获取到的值
System.out.println("Value for 'Apple': " + value); // 输出:10
结语:Java8 Map集合的新利器
put()、compute()和getOrDefault()方法的加入,为Java8 Map集合带来了更加强大的功能和更加灵活的用法。它们不仅简化了编程任务,也提高了开发效率。希望本文能帮助您更深入地理解这三个新方法,并将其应用到实际项目中。