Java 删除hashmap中的一个值,而不是所有值和键
我有一个hashmap,它是Java 删除hashmap中的一个值,而不是所有值和键,java,hashmap,Java,Hashmap,我有一个hashmap,它是映射任务。在任务中,我有一些键,键有一些值,而不仅仅是一个值 我想用给定的键从hashmap中删除一个值,但我还想保留其他值 我的意思是像这样的release=[“修复bug 1”、“修复bug 2”、“实现功能X”]。现在,release是键(字符串类型)并且具有值(集合类型)“修复bug 1”、“修复bug 2”、“实现功能X”。。我想修改版本如下: release=[“实现功能X”] 如何删除2个值???谢谢使用该键,您可以获得所需的设置,然后删除该值: map
映射任务
。在任务中,我有一些键,键有一些值,而不仅仅是一个值
我想用给定的键从hashmap中删除一个值,但我还想保留其他值
我的意思是像这样的release=[“修复bug 1”、“修复bug 2”、“实现功能X”]
。现在,release
是键(字符串类型)并且具有值(集合类型)“修复bug 1”、“修复bug 2”、“实现功能X”
。。我想修改版本
如下:
release=[“实现功能X”]
如何删除2个值???谢谢使用该键,您可以获得所需的设置,然后删除该值:
map.get("key").removeIf(s -> s.equals("value"));
map.get("key").removeIf(s -> s.equals("value") || s.equals("value1"));
你可以做更多的组合。
不需要更新HashMap。它有Set的引用,任何发生在Set上的事情HashMap都知道它。您的映射只包含对Set的引用,因此您可以直接修改Set,并且映射将看到更改
这意味着您可以:
tasks.get("release").removeAll(Arrays.asList("fix bug 1", "fix bug 2"));
甚至:
tasks.get("release").retainAll(Arrays.asList("implement feature X"));
您需要获取
集合
,然后像其他集合一样从中删除。Map
对于您正在做的事情并不重要。但是当我从Set
中删除值时,我必须更新hashMap,对吗@LouisWassermanI获得了ConcurrentModificationException
Exception否。你不应该更新地图。如果您获得的是ConcurrentModificationException
,那么从集合中删除值的代码是错误的,可能是因为您在循环中调用set.remove(value)
,而不是使用Iterator.remove()
,或者使用removeIf
或removeAll
而不是在循环中。当然,removeIf(s->s.equals(“value”)
与删除(“value”)
相同。