gpt4 book ai didi

java - 从存储重复元素的 Arrays.asList 创建的集合

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:59 24 4
gpt4 key购买 nike

我使用如下结构从对象数组中获取唯一元素。

dataList.put(column, new LinkedList<Object>(new HashSet<Object>(Arrays.asList(entry.getValue()))));

来自 entry.getValue() 的数组是一个包含 1 到 99 值的 100 元素数组,其中 1 重复两次。

文档说 Arrays.asList(arr[]) 方法返回一个与数组长度相同的固定长度列表。

我观察到创建的集合还包含原始数组给出的重复值。

请解释此行为。

更多详情。

我也尝试过使用 set.addAll(Arrays.asList(entry.getValue())); ,其中 set 是一个 HashSet 并得到相同的结果。

entry.getValue()返回的数组是java.lang.Short类型的数组

最佳答案

很可能,您没有在 entry.getValue() 返回的数组中的对象类中覆盖 equals()。尤其是因为您正在使用 HashSet,所以您也应该覆盖 hashCode(),以便它“同意”equals(),如根据 javadoc of equals() :

Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.

如果你不覆盖 equals(),每个实例都不会 equal() 到任何其他实例,尽管它的“值”是相同的,因为那是equals() 的默认实现,因此 Set 会将两个“1”对象视为“不同”。

关于java - 从存储重复元素的 Arrays.asList 创建的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350098/

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