Java ArrayList.contains()方法不起作用
我有一个Java ArrayList.contains()方法不起作用,java,arrays,arraylist,contains,Java,Arrays,Arraylist,Contains,我有一个ArrayListordineDopoModifica public static ArrayList<Persona> ordineDopoModifica = new ArrayList<Persona>(); 现在我想说,如果一个int包含在ordineDopoModifica中 这就是我现在所做的: boolean c=sceltacibo.ordineDopoModifica.contains(chiave); 下面是我的重写的equals方法: @
ArrayList
ordineDopoModifica
public static ArrayList<Persona> ordineDopoModifica = new ArrayList<Persona>();
现在我想说,如果一个int包含在ordineDopoModifica中
这就是我现在所做的:
boolean c=sceltacibo.ordineDopoModifica.contains(chiave);
下面是我的重写的equals方法:
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj instanceof Persona) {
Persona p = (Persona) obj;
return codp.equals(p.codp);
}
else return false;
}
但是boolean c=sceltacibo.ordineDopoModifica.contains(交叉)
不起作用-它总是返回false,即使我确信chiave
在ArrayList
中
现在我想说,如果我的arrayList或OrdinePopModifica中包含int
您正在检查ArrayList或IndeTopoModifica
是否包含int
。它没有,它只包含Persona
对象,因此它总是返回false
更准确地说,equals(objectobj)
将在此处失败:
if (obj instanceof Persona) {
Persona p = (Persona) obj;
return codp.equals(p.codp);
} else
return false;
这是因为
整数
不是人物角色的实例
显示了不起作用的完整示例。您是否也覆盖了hashCode()?因为你应该知道包含了工作。。。检查你的equals
是什么类型的chiave
?如果它不是Persona
的任何其他类型,则您的instanceof
将始终计算为false
…chiave=String,chiave是临时字符串。我想说如果我的数组中有chiave,那么chiave=codp!是的,但是如果我在我的arrayLIst ordineDopoModifica:cod=13 nome=hello qnt=3中,如果我想查看myArray.contains(cod=13)是否包含,我该怎么做?@Mikykly遍历列表,并对每个Persona
实例执行您想要执行的检查。如果命中,请返回对象。@Mikykly并且在任何情况下都不在equals
方法中包含instanceof
检查数值类型,您肯定会创建错误源。这里只是一个友好的建议。
if (obj instanceof Persona) {
Persona p = (Persona) obj;
return codp.equals(p.codp);
} else
return false;