Java 中的 getOrDefault 方法在 Map 的 key 存在但 value 为 null 时,会返回 null,而不是默认值。这是因为 getOrDefault 方法的逻辑是,如果 key 存在,则返回其对应的 value;如果 key 不存在,则返回默认值。

如果想要在 key 存在但 value 为 null 的情况下返回默认值,可以使用 computeIfAbsent 方法。computeIfAbsent 方法会先检查 key 是否存在,如果存在则返回其对应的 value;如果不存在,则调用提供的函数来计算默认值并将其放入 Map 中,最后返回计算出的默认值。

以下示例展示了如何使用 computeIfAbsent 方法设置默认值:

Map<String, String> map = new HashMap<>();
map.put('key', null);

String value = map.computeIfAbsent('key', k -> 'default');
System.out.println(value); // 输出:default

在上面的示例中,key 存在但其对应的 value 为 null。computeIfAbsent 方法会调用提供的函数 k -> 'default' 来计算默认值,并将计算出的默认值 'default' 放入 Map 中,最后返回 'default'。

总结:

  • getOrDefault 方法在 key 存在但 value 为 null 时会返回 null。
  • computeIfAbsent 方法可以在 key 存在但 value 为 null 的情况下设置默认值。
Java Map 中 key 存在但 value 为 null 时 getOrDefault 方法的行为

原文地址: https://www.cveoy.top/t/topic/m008 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录