gpt4 book ai didi

Java TreeSet : duplicate elements?

转载 作者:行者123 更新时间:2023-12-02 08:52:56 27 4
gpt4 key购买 nike

我想在 TreeSet 中有一些 int 对,并按第一个数字对它们进行排序。

代码test here :

public static void main (String[] args) throws java.lang.Exception
{
SortedSet<int[]> s = new TreeSet<int[]>(new Comparator<int[]>(){
public int compare(int[] a, int[] b) {
return b[0] - a[0];
}
});
int[] a = new int[]{1, 2};
int[] b = new int[]{1, 3};
s.add(a);
s.add(b);
System.out.println(s.size());
}

我不知道为什么TreeSet的大小变成了1。看起来ab的hashCode是相同的,但为什么呢?

感谢您的帮助。

顺便说一句:事实上,我试图将重复的数字放入一组中,这是不可能的。然后我尝试将 int 对放入集合中。第一个数字是我想要的实际数字,第二个数字是为了防止重复。但我遇到了这个问题。

最佳答案

结果是 1 因为您的 compare 方法仅使用数组中的第一个数字,并且您拥有的两个数组都以 1< 开头。因此,从TreeSet的角度来看,这两个数组是相同的。

TreeSet.add返回

true if this set did not already contain the specified element

,并且由于两个值被视为相等(compare 返回 0),因此不会添加第二个值并且 add() 返回

关于Java TreeSet<int[]> : duplicate elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059164/

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