Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除hashmap中的一个值,而不是所有值和键_Java_Hashmap - Fatal编程技术网

Java 删除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,它是
映射任务
。在任务中,我有一些键,键有一些值,而不仅仅是一个值

我想用给定的键从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”)
相同。