我在Java中有list<array[]>
,我想从中删除所有重复项。
此外,数组[1,2]
与数组[2,1]
相同。
我想使用Set,但据我所知,如果我声明2个数组:int[] array1 = {1, 2}
和int[] array2 = {1,2}
,Java会将它们视为2个不同的数组。另外,对于[1,2]
和[2,1]
我该怎么做?
答案 0 :(得分:1)
我没有经过测试,但您可以在添加到set
int[] array1 = {1, 2};
Arrays.sort(array1);
set.add(array1);
答案 1 :(得分:0)
使用HashSet,然后将当前列表的所有内容添加到其中。然后使用.toArray()方法返回列表。
HashSet<Integer> noDuplicates = new HashSet<Integer>();
Integer[] array = { 1, 2, 2, 3, 3, 4, 1};
System.out.println(Arrays.toString(array));
for (Integer i : array)
noDuplicates.add(i);
array = noDuplicates.toArray(new Integer[] {});
System.out.println(Arrays.toString(array));
如果你必须检查两个阵列是否经常相同,那么你可能只想使用一个Set而不是一个数组,因为它会为你节省额外的步骤,将所有内容放入一个Set然后检查。
答案 2 :(得分:0)
Iterator
来迭代list
。Arrays.equals(arg0, arg1)
方法比较list
内的数组。iterator.remove()
删除了相同的数组。答案 3 :(得分:0)
List<int[]> b = new ArrayList<int[]>(); // Your list here
for (int[] ar : b) {
Arrays.sort(ar);
}
Set<int[]> a = new HashSet<>(b);