如何通过值从哈希映射中删除条目?

25

我需要一种方法通过值从哈希映射中移除一个entryset。是否有一种简单的方法而无需迭代?

2个回答

28

有一个简单的方法,但它会在内部使用迭代。(这是无法避免的。)

map.values().remove(valueToRemove);

3
OP提到了要删除一个“entryset”。如果他指的是Set,那么可以使用map.values().removeAll(setOfValuesToRemove)。请注意,map.values.remove(valueToRemove)只会删除遇到的第一个valueToRemove。 - Jerome
map.entrySet().removeIf(entry -> entry.getValue().equals(value)); 将map中值等于value的entry移除。 - Ilya

8

虽然Java的HashMap没有直接提供这个功能,但是Google Guava提供了一个双向映射(BiMap)的数据结构,你可以参考下面的伪代码实现:

BiMap m=new HashBiMap();
m.inverse().remove(valueYouWantToRemove)

你的Guava Javadoc链接已经过期了,更好的链接是this或者this,而且你需要实例化一个HashBiMap,因为BiMap只是一个接口。此外,这种技术只有在你知道你的值是唯一的情况下才有效--这在OP的帖子中并不清楚。 - Louis Wasserman
@LouisWasserman 感谢您的评论。我的意图只是提供伪代码。无论如何,我已经进行了修正。 - Aravind Yarram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接