gpt4 book ai didi

java - 为什么 addAll() 不支持将集合的副本添加到集合中?

转载 作者:行者123 更新时间:2023-12-02 18:19:12 25 4
gpt4 key购买 nike

在一个方法中,我进行了两次调用。第一个调用从另一个方法构造并返回一个哈希集。第二次调用将这个新构造的集合添加到现有集合中,并作为参数传递给此方法。

public static void someMethod(java.util.HashSet<Coordinate> invalidPositions)
{
java.util.HashSet<Coordinate> newSet = SomeClass.getInvalidPositions(x, y);
invalidPositions.addAll(newSet);
}

很多时候,传入的集合(预先存在的集合)会添加另一个内容与其自身相同的集合!即,setOne.equals(setTwo) == true

然而,JavaDocs 没有添加其他集合,而是说 addAll():

public boolean addAll(Collection c)

Adds all of the elements in the specified collection to this collection (optional operation). The behavior of this operation is undefined if the specified collection is modified while the operation is in progress. (This implies that the behavior of this call is undefined if the specified collection is this collection, and this collection is nonempty.)

我的理解正确吗?如果两个集合相等,java将不支持一个集合和另一个集合相加?如果这是真的,那么有什么理由以这种方式设计语言呢?

最佳答案

a.equals(b)a == b 不同。

javadoc 的意思是,如果执行 a.addAll(a),则行为未定义。只要它们是不同的实例,执行 a.addAll(b) 就没有问题。

关于java - 为什么 addAll() 不支持将集合的副本添加到集合中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32534528/

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