Java 我不希望将相等的向量加在一起(或在没有向量的情况下列出)

Java 我不希望将相等的向量加在一起(或在没有向量的情况下列出),java,list,set,Java,List,Set,我不希望将相等的向量加在一起(或者在没有向量的情况下列出)。当我在一个集合中添加两个相等的数字时,只添加一个,但当我添加两个相等的向量时,两个向量相加。有人知道怎么解决吗?我的代码: int[] a = new int[] {0,1,2,3,4,5,6}; int[] b = new int[] {0,1,2,3,4,5,6}; Set setExample = new HashSet(); setExample.add(a); setExampl

我不希望将相等的向量加在一起(或者在没有向量的情况下列出)。当我在一个集合中添加两个相等的数字时,只添加一个,但当我添加两个相等的向量时,两个向量相加。有人知道怎么解决吗?我的代码:

    int[] a = new int[] {0,1,2,3,4,5,6};
    int[] b = new int[] {0,1,2,3,4,5,6};

     Set setExample = new HashSet();
     setExample.add(a);
     setExample.add(b);

集合“setExample”具有a和b。

数组不使用值相等,因此集合不会将两个相似的数组视为重复。你可以用列表代替。
List
的标准实现覆盖了
equals
hashCode
,因此具有相同内容的两个列表被视为相等

List<Integer> a = Arrays.asList(1,2,3);
List<Integer> b = Arrays.asList(1,2,3);
Set<List<Integer>> set = new HashSet<>();
set.add(a);
set.add(b);
// set will only contain one list
List a=Arrays.asList(1,2,3);
listb=Arrays.asList(1,2,3);
Set=newhashset();
增加(a);
增加(b);
//集合将只包含一个列表

数组不使用值相等。你可以用
List
s代替。那不是向量。这是一个数组。不要使用数组。使用列表(或包含值并正确重写equals()和hashCode()的任何其他类)。数组只能等于它们自己。它们不会覆盖equals()和hashCode()。@khelwood但在列表中可以重复元素,对吗?是的,就像在数组中一样。我的意思是使用列表而不是数组。