如果不是空值,则将值放入映射中

2022-09-02 20:52:49

Java有类似的东西吗?

map.putIfValueNotNull(key, value)

因此,只有在没有显式检查的情况下,我才能将值放入映射中,如果它不为空。


答案 1

我知道包含方法,但如果是,它添加的不是你想要的。org.apache.commons.collections4.MapUtilssafeAddToMap()valuenullempty string

我不喜欢变体,重写以实现新方法,因为在这种情况下,你没有它用于其他实现:或者否则。HashMapTreeMapLinkedHashMap

我不知道这个函数是否存在于一些可用的库中,比如或类似的。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;
}

答案 2

您可以使用函数来检查密钥是否已在映射中。如果它在那里,它不会做任何事情。如果键不存在,则检查计算值是否为 null,如果不是,则将其放入映射中。computeIfAbsent()

map.computeIfAbsent(key, val -> value);

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