java – 如果value为空,则删除键
发布时间:2020-12-15 04:34:11 所属栏目:Java 来源:网络整理
导读:假设我们有一个Map Key,Collection Value myMap和从与键关联的集合中删除值的方法.如果删除值使集合为空,我们想要删除映射中的键条目: ListValue removeValue(Key key,Value value) { ListValue v = myMap.get(key); if (v != null) { v.remove(value); if
假设我们有一个Map< Key,Collection< Value>> myMap和从与键关联的集合中删除值的方法.如果删除值使集合为空,我们想要删除映射中的键条目:
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,则computeIfPresent将BiFunction应用于键和映射中的当前值(如果它为null,则computeIfPresent立即返回null),如果返回值不为null,则将值设置为BiFunction的返回值如果返回值为null,则从地图中删除键,最后返回新值. 请注意,它的行为与您提出的方法略有不同 – 它不会从地图中删除已经空的List,因为remove将返回false.如果要删除已经空的List,可以使用l.isEmpty()|| (l.remove(value)&& l.isEmpty()). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容