在包含数组的列表中删除重复项

问题描述:

我在Java中有一个list<array[]>,我想从中删除所有重复项。另外,数组[1,2]与数组[2,1]相同。在包含数组的列表中删除重复项

我想使用Set,但据我所知,如果我声明2个数组:int[] array1 = {1, 2}int[] array2 = {1,2},Java认为它们是2个不同的数组。此外,在[1,2][2,1]

的情况下,它并没有帮助我该怎么办?

+0

“_I要使用SET_”做之前做了数组排序。两套相同的内容被认为是相同的。 – jlordo 2013-05-01 10:36:40

我没有测试过,但你可以添加到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)); 

如果你有检查两个数组往往都是相同的,那么你可能只是想使用一组,而不是一个数组,因为它可以节省你把一切成一组,然后额外的步骤检查。

  1. 使用Iterator重复list
  2. 使用Arrays.equals(arg0, arg1)方法比较list中的数组。
  3. 如果您发现使用iterator.remove()删除了相同的阵列。

List<int[]> b = new ArrayList<int[]>(); // Your list here 
for (int[] ar : b) { 
    Arrays.sort(ar); 
} 
Set<int[]> a = new HashSet<>(b);