检查包含数组

时间:2016-08-04 07:41:25

标签: java arrays arraylist equals contains

我遇到了以下问题。我做了一些研究,但找不到令人满意的答案,所以如果这是重复的,请随意指出我正确的方向。谢谢。

假设我有一个CustomClass A.只有2个参数,没什么特别的,没有覆盖等号方法。

A inst1 = new A(5,3);
A inst2 = new A(6,7);
A inst3 = new A(3,5);

这会创建3个A实例,所有实例都不同。 现在我把它们放在两个数组中:

A[] arr1 = new A[3];
arr1[0] = inst1;
arr1[1] = inst2;
arr1[2] = inst3;

A[] arr2 = new A[3];
arr2[0] = inst1;
arr2[1] = inst2;
arr2[2] = inst3;

如果我现在创建一个ArrayList并添加arr1

ArrayList<A[]> arraylist = new ArrayList<>();
arraylist.add(arr1)

我希望arraylist包含arr2。

arraylist.contains(arr2) //returns false

我编写了一个自定义方法来检查,但由于ArrayList.contains调用了相等的方法,我假设有一种更优雅的方式。我发现,你不能覆盖数组的等于方法。

自定义方法:

private boolean listContainsAArray(ArrayList<A[]> list, A[] arr){
    int listsize = list.size();
    for(int i=0;i<listsize;i++){
        A[] listelement = list.get(i);
        if((listelement[0]==arr[0])&(listelement[1]==arr[1])&(listelement[2]==arr[2])){
            return true;
        }
    }
    return false;
}

0 个答案:

没有答案