Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList.contains()方法不起作用_Java_Arrays_Arraylist_Contains - Fatal编程技术网

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;