当前位置:  开发笔记 > 编程语言 > 正文

如果我使用hashMap.values().remove()从HashMap中删除一个值,它会从地图中删除完整的键/值记录吗?

如何解决《如果我使用hashMap.values().remove()从HashMap中删除一个值,它会从地图中删除完整的键/值记录吗?》经验,为你挑选了1个好方法。

假设我需要按值删除HashMap中某些内容.

我可以做这个:

myMap.values().remove("abc");

但是这还会删除指向此值的键吗?我可以放心,完整的Key-> Value行已经消失了吗?

1 -> a
2 -> ab
3 -> abc
4 -> abcd

在这个操作之后,我确定HashMap中填写的条目列表是3吗?

在内部,Java如何知道还应该删除相应的密钥?毕竟,我只是调用一个通用的Collection Remove.



1> Louis Wasser..:

http://docs.oracle.com/javase/7/docs/api/java/util/Map.html#values()

返回此映射中包含的值的Collection视图.该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然.如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的.该集合支持元素删除,它通过Iterator.remove,Collection.remove,removeAll,retainAll和clear操作从地图中删除相应的映射.

所以,是的.从values()视图中删除可以保证从底层映射中删除整个映射.

对于您给出的示例,是的,该条目3 -> abc将被删除.

在内部,Java如何知道还应该删除相应的密钥?毕竟,我只是调用一个通用的Collection Remove.

返回的Collection实现map.values()是一个特殊的实现,它是根据底层映射实现的,而不像普通的Collection那样实现ArrayList.因此,实施removeCollection由返回Map.values()工作在基础地图数据结构.


@PeterLawrey,目前还不清楚OP在那里问什么,如果有的话?他们问"我确定HashMap中填写的条目列表是3吗?" 哪个......是一个荒谬的句子.
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有