我有一个数组列表:
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
我在这里做错了什么?
答案 0 :(得分:1)
既然你隐瞒了什么,我无法给出明确答案,但你可以试试
public static boolean contains(ArrayList<MyObj[]> list, MyObj[] element) {
for (MyObj[] e: list) {
if (Arrays.equals(e, element)) return true;
}
return false;
}
答案 1 :(得分: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