gpt4 book ai didi

java - 为什么 HashSet.add(Object) 不替换现有对象?

转载 作者:行者123 更新时间:2023-11-29 10:10:28 24 4
gpt4 key购买 nike

这更像是一个设计问题,我很好奇为什么 HashSet 不支持 add 的 put like 操作。

如果我想用与现有对象相同的 hashCode 更新一个对象,我必须这样做:

hashSet.remove(o);
hasSet.add(o);

我觉得

hashSet.add(o);

应该已经足够了,因为它在后台使用了一个 HashMap。

最佳答案

没有必要将 HashSet 元素替换为与其相等的元素。在 HashMap 中,有一点可以替换现有键的条目,因为值可以不同。

I think a hashSet.add(o); should have sufficed since it uses a HashMap under the hood anyway.

其实没有。 HashSetHashMap 支持,这是正确的,其中 Set 的每个元素都是一个键,值是一个虚拟对象。但是,由于 map.put(key,value) 不会在 Map 中存在相等键时替换键(它只会替换值),HashSet 不能替换元素,如果它已经存在于 Set 中而不先删除它。

关于java - 为什么 HashSet.add(Object) 不替换现有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38764876/

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