在包含数组的列表中删除重复项
问题描述:
我在Java中有一个list<array[]>
,我想从中删除所有重复项。另外,数组[1,2]
与数组[2,1]
相同。在包含数组的列表中删除重复项
我想使用Set,但据我所知,如果我声明2个数组:int[] array1 = {1, 2}
和int[] array2 = {1,2}
,Java认为它们是2个不同的数组。此外,在[1,2]
和[2,1]
的情况下,它并没有帮助我该怎么办?
答
我没有测试过,但你可以添加到set
int[] array1 = {1, 2};
Arrays.sort(array1);
set.add(array1);
答
使用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));
如果你有检查两个数组往往都是相同的,那么你可能只是想使用一组,而不是一个数组,因为它可以节省你把一切成一组,然后额外的步骤检查。
答
- 使用
Iterator
重复list
。 - 使用
Arrays.equals(arg0, arg1)
方法比较list
中的数组。 - 如果您发现使用
iterator.remove()
删除了相同的阵列。
答
List<int[]> b = new ArrayList<int[]>(); // Your list here
for (int[] ar : b) {
Arrays.sort(ar);
}
Set<int[]> a = new HashSet<>(b);
“_I要使用SET_”做之前做了数组排序。两套相同的内容被认为是相同的。 – jlordo 2013-05-01 10:36:40