gpt4 book ai didi

java - 转换为 Set 时 List 的大小会发生变化

转载 作者:行者123 更新时间:2023-12-01 13:35:11 24 4
gpt4 key购买 nike

我有一个ArrayList:

List<MyClass> xxx = new ArrayList<MyClass>(functionThatGetsAList());

当我测试 xxx.size() 时,我得到 3,这是正确的。然后我尝试转换:

Set<MyClass> yyy = new HashSet<MyClass>(xxx);

或者:

Set<MyClass> yyy = new HashSet<MyClass>();
yyy.addAll(xxx);

在这两种情况下,yyy.size() 都是 1,并且它只复制第一个对象。为什么?

最佳答案

来自 HashSet 的文档

boolean add(E e) Adds the specified element to this set if it is not already present.

尝试在循环中将列表中的这些元素添加到集合中。

是否set.add(l);每次迭代都返回 true 吗?如果不是,我认为可以安全地假设您尝试添加到集合中的内容与哈希码确定的内容相同。如果是这种情况,您需要重写 hashcode()。

关于java - 转换为 Set 时 List 的大小会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337649/

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