2013-04-15 3 views
-1

은 내가 ArrayList ordineDopoModificaArrayList.contains() 메소드는

public static ArrayList<Persona> ordineDopoModifica = new ArrayList<Persona>(); 

이는 페르소나의 클래스가 작동하지 :

class Persona { 

public String nome; 
public String prezzo; 
public String ingredienti; 
public String codp; 
public byte[] immagine;} 

지금 내가 INT는 ordineDopoModifica에 포함되는 경우하고 싶은 말을 .. .

내가 지금 무엇을 :

boolean c=sceltacibo.ordineDopoModifica.contains(chiave); 

여기 내 오버라이드 (override) 메소드와 동일입니다 :

@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(chiave);이 작동하지 않습니다 - 그것은 항상 내가 chiaveArrayList에 확신에도 불구하고, false를 돌려줍니다.

+2

작동하지 않는 것을 보여주는 예를 보여줍니다. – assylias

+0

hashCode()도 재정의합니까? 왜냐하면 당신이해야만하기 때문에 –

+0

나는 꽤'포함 된'일을하고있다 ...'평등 '을 확인하십시오 – NilsH

답변

7

지금 내가 ArrayList<Persona> ordineDopoModificaint 포함 된 경우 검사 있습니다 ... 정수 (int) 내 ArrayList를 ordineDopoModifica에 포함되어있는 경우

을 말하고 싶습니다. 그것은, 단지 Persona 개체를 포함하므로 항상 false를 반환합니다.

if (obj instanceof Persona) { 
    Persona p = (Persona) obj; 
    return codp.equals(p.codp); 
} else 
    return false; 

이있는 IntegerPersona의 인스턴스가 아니므로 :

equals(Object obj) 여기에 실패, 더 정확합니다.

+0

예,하지만 배열에있는 경우 ordineDopoModifica : cod = 13 nome = hello qnt = 3, myArray.contains (cod = 13)를보고 싶다면 어떻게 할 수 있습니까? – Mikykly

+0

코드가 완전하지는 않지만 분명히 올바른 것 같습니다. – madth3

+0

@Mikykly 목록을 반복하고 각각의'Persona' 인스턴스에 대해 수행 할 점검을 수행하십시오. 적중을 당하면 그 물건을 돌려 보내십시오. – Magnilex

관련 문제