gpt4 book ai didi

java - 如果值为空,则删除键

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:00 26 4
gpt4 key购买 nike

假设我们有一个 Map<Key, Collection<Value>> myMap以及从与键关联的集合中删除值的方法。如果删除一个值使集合为空,我们希望摆脱 key map 中的条目:

List<Value> removeValue(Key key, Value value) {
List<Value> v = myMap.get(key);
if (v != null) {
v.remove(value);
if (v.isEmpty())
myMap.remove(key);
}
return v;
}

是否有任何 Java 8 方法可以通过单行或更短的方法实现所描述的行为?

最佳答案

您可以使用 computeIfPresent为此:

static <K, V> List<V> removeValue(K key, V value, Map<K, List<V>> map){
return map.computeIfPresent(key, (k, l) -> l.remove(value) && l.isEmpty() ? null : l);
}
如果值不是 null(如果是 null computeIfPresent 立即返回 null)然后将值设置为 BiFunction 的返回值(如果返回值为如果返回值为 null,则不 null 或从映射中删除键,最后返回新值。

请注意,它的行为与您提问的方法略有不同 - 它不会从 map 中删除已经为空的 List,因为 remove 将返回 false。如果你想删除一个已经空的 List 你可以使用 l.isEmpty() || (l.remove(value) && l.isEmpty()).

关于java - 如果值为空,则删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37126031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com