gpt4 book ai didi

java - 为什么在 Java 中清除值时我们得到一个空映射?

转载 作者:行者123 更新时间:2023-11-29 09:51:45 26 4
gpt4 key购买 nike

我有一张 map 。

Map<UUID, List<UUID>> parentsMap

当我试图清除值时:

parentsMap.values().clear()

它完全清除了我的 map 。我只能这样做:

parentsMap.forEach((k, v) -> v.clear())

我知道当我们编辑 map 的 .keySet() 时,我们改变了原点 map 。但是为什么当我们编辑 values() 时它会对键产生影响??

最佳答案

这就是 Javadoc 所说的:

java.util.Map.values()

Returns a Collection view of the values contained in this map. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. If the map is modified while an iteration over the collection is in progress (except through the iterator's own remove operation), the results of the iteration are undefined. The collection supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Collection.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.

就像编辑一样keySet()修改了支持 Map ,编辑也是如此 values() .

因为你想申请 clear对每个人的操作List<UUID> Map 的值(value),您必须遍历所有值并调用 clear()像你在 parentsMap.forEach((k, v) -> v.clear()) 中所做的那样分别对它们中的每一个进行称呼。你也可以做 parentsMap.values().forEach(List::clear) .

关于java - 为什么在 Java 中清除值时我们得到一个空映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com