-3

我有一个数组列表:

List<MyObj[]> list = new ArrayList<MyObj[]>();

我将数组放入其中:

MyObj[] test = new MyObj[2];
test[0] = new MyObj();
test[1] = new MyObj();
list.add(test);

我检查测试是否包含在列表中:

if(list.contains(test)){
    System.out.println("You are smart");
}else{
    System.out.println("I are not smart");
}

>I are not smart

我在这里做错了什么?

4

2 回答 2

1

既然你隐瞒了什么,我无法给出肯定的答案,但你可以试试

public static boolean contains(ArrayList<MyObj[]> list, MyObj[] element) {
    for (MyObj[] e: list) {
        if (Arrays.equals(e, element)) return true;
    }
    return false;
}
于 2013-10-01T19:00:28.490 回答
0

两件事之一,你需要更新你的 jre,或者你正在改变数组。

这工作得很好:

public class Main {
    public static void main(String[] args) {
        List<MyObj[]> list = new ArrayList<MyObj[]>();

        MyObj[] test = new MyObj[2];

        test[0] = new MyObj();
        test[1] = new MyObj();
        list.add(test);

        if(list.contains(test)){
            System.out.println("is true");
        }else{
            System.out.println("Is  not true");
        }

    }
}
class MyObj {
    public MyObj() {

    }
    public String x;

}

输出:

is true
于 2013-10-01T19:00:42.623 回答