如果不为null,则将值放入地图

Zim*_*ger 5 java collections hashmap

Java是否有类似的东西

map.putIfValueNotNull(key, value)
Run Code Online (Sandbox Code Playgroud)

因此,只有在没有显式检查的情况下,它的值不为null时,才可以将其放入地图中。

bbo*_*win 15

在这种情况下,我只会使用Optional

Optional.ofNullable(value).ifPresent(v -> map.put(key, v));
Run Code Online (Sandbox Code Playgroud)

形式上,这不满足显式检查缺失的要求,但它仍然相当简短和干净,并且如果值为 ,则不会对 map 执行任何操作null


HDC*_*ase 10

您可以使用computeIfAbsent()函数来检查键是否已在地图中,如果该键不起作用。如果键不存在,则它将检查计算出的值是否为空,如果不存在,则将其放入映射中。

map.computeIfAbsent(key, val -> value);
Run Code Online (Sandbox Code Playgroud)

注意,putIfAbsnet将空值放入映射中。

  • 我认为他想要的是在地图中没有任何内容(如果为空)。 (3认同)
  • 这不满足OP的要求。当传递的值不为空时,您的代码的行为不像“put”,即它不会覆盖值 (2认同)

ole*_*nik 5

我知道org.apache.commons.collections4.MapUtilscontains方法safeAddToMap(),但是如果valuenull,它添加empty string的不是您想要的。

我不喜欢改写HashMap以实现新方法,因为在这种情况下,其他实现没有此方法:TreeMapor LinkedHashMapor。

我不知道此功能存在于某些可用库中,例如Apache类似库。

因此,在我的项目中,我必须自己实施:

public static <K, V> Map<K, V> addNotNull(Map<K, V> map, K key, V value) {
    if(value != null)
        map.put(key, value);

    return map;
}
Run Code Online (Sandbox Code Playgroud)