【发布时间】:2021-12-31 03:08:42
【问题描述】:
如何防止集合中包含重复的数组?
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());
我希望集合只包含一个元素。
【问题讨论】:
-
使用
ArrayList<Integer>而不是int[]。或者实现您自己的包含 int 数组的包装类,然后您可以覆盖hashCode和equals -
我认为这里可能存在更深层次的体系结构问题,为什么要将 int 数组(而不是自定义数据类型)添加到
Set? -
你可以wrap each array in an IntBuffer,因为 IntBuffer 提供了有意义的 equals 和 hashCode 方法。 (只是不要在创建缓冲区后更改任何缓冲区的位置或限制。)