在 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
,它按字典顺序比较数组。
如何防止集合包含重复数组?
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
,它按字典顺序比较数组。