我正在尝试在Java中存储唯一整数数组的列表。我不能使用哈希集,因为.equals方法不会将具有相同值但引用不同的int []等同起来。
一种选择是使用List<Integer>
而不是int[]
作为Set
的元素,这将允许您使用任何Set
实现。
如果必须使用数组,则可以通过将自定义TreeSet<int[]>
传递给Comparator<int[]>
构造函数,将它们存储在TreeSet
中。这应该可行,因为TreeSet
不使用equals()
和hashCode()
来确定两个元素是否相同。
我认为以下代码段将是您的解决方案。如果我正确的话
List<Integer> numberList = new ArrayList<Integer>();
int[] myInts = {1, 1, 2, 3, 3, 3, 3, 4};
for (int i : myInts) {
if (!numberList.contains(i)) {
numberList.add(i);
}
}