检查 ArrayList<int[]> 是否包含忽略的相同数组顺序

Check if ArrayList<int[]> Contains same array order ignored

我已经初始化了一个包含 int 数组的 ArrayList:

ArrayList<int[]> holder = new ArrayList<int[]>();

如果我像这样添加一个 int[]:

int[] first = {1, 2, 3};

holder.add(first);

如果我进行此检查,我希望函数 return 为真,但现在 return 为假

int[] second = {2, 1, 3};

if(holder.contains(second)) return true;

else return false

你不能用ArrayList#Contains来判断,因为int[]没有特殊的equals。您可以迭代列表然后比较:

    private static boolean contains(ArrayList<int[]> holder, int[] arr) {
        for (int[] item : holder) {
            if (equals(item, arr)) {
                return true;
            }
        }
        return false;
    }

    // from 
    private static boolean equals(int[] arr1, int[] arr2) {
        int[] copyOfArr1 = Arrays.copyOf(arr1, arr1.length);
        int[] copyOfArr2 = Arrays.copyOf(arr2, arr2.length);
        Arrays.sort(copyOfArr1);
        Arrays.sort(copyOfArr2);
        return Arrays.equals(copyOfArr1, copyOfArr2);
    }