📜  用Java Map中的默认值替换空值(1)

📅  最后修改于: 2023-12-03 15:40:52.584000             🧑  作者: Mango

用Java Map中的默认值替换空值

在Java中,Map是一种非常方便的数据结构,它被用于存储和操作键值对。但当我们试图从一个Map中获取一个不存在的键值对时,会出现NullPointException的情况。有时我们需要给这些空值提供一个默认值,避免这种情况的发生。

Java 8中,Map接口提供了一个非常方便的方法getOrDefault,用于获取Map中指定key对应的值,如果该key不存在,则返回一个默认值。下面是一个示例代码:

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", null);
String value1 = map.getOrDefault("key1", "default1"); // 将返回"value1",因为key1存在
String value2 = map.getOrDefault("key2", "default2"); // 将返回"default2",因为key2对应的值为null
String value3 = map.getOrDefault("key3", "default3"); // 将返回"default3",因为key3不存在

除了getOrDefault方法,还有其他的方法可以达到相同的效果,如putIfAbsent和computeIfAbsent。这些方法在处理默认值时有不同的优劣,需要根据具体情况选择使用。

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", null);
String value1 = map.putIfAbsent("key1", "default1"); // 将返回"value1",因为key1已经存在
String value2 = map.putIfAbsent("key2", "default2"); // 将返回"null",因为key2对应的值为null,而putIfAbsent不会覆盖null值
String value3 = map.putIfAbsent("key3", "default3"); // 将返回"default3",因为key3不存在
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", null);
String value1 = map.computeIfAbsent("key1", k -> "default1"); // 将返回"value1",因为key1已经存在
String value2 = map.computeIfAbsent("key2", k -> "default2"); // 将返回"null",因为key2对应的值为null,而computeIfAbsent不会覆盖null值
String value3 = map.computeIfAbsent("key3", k -> "default3"); // 将返回"default3",因为key3不存在

总之,在实际开发中,要充分利用Java Map接口提供的方法,合理地处理空值和默认值,避免出现异常。