在 java 集合中覆盖等于

override equals in a java set

如何防止集合包含重复数组?

    Set<int[]> set = new HashSet<>();
    int[] tmp = new int[]{1,2};
    set.add(tmp);
    tmp = new int[]{1,2};
    set.add(tmp);
    System.out.println(set.size());

我希望集合只包含一个元素。

您可以使用 TreeSet.

TreeSet 使用 Comparable.compareTo()Comparator.compare() 而不是 hashCode()equals() 来比较元素。可以在构造函数中指定。

public static void main(String[] args) {
    Set<int[]> set = new TreeSet<>(Arrays::compare);
    set.add(new int[]{1,2});
    set.add(new int[]{1,2});
    System.out.println(set.size());
}

输出:

1

Arrays::compare 是一个 Comparator,它按字典顺序比较数组。