2013-04-15 42 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); 

這裏是我重寫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(chiave);不工作 - 它始終返回false,即使我敢肯定chiaveArrayList

+2

顯示不起作用的完整示例。 – assylias

+0

你重寫hashCode()嗎?因爲你應該 –

+0

我很確定'包含'工作...檢查你的'等' – NilsH

回答

7

現在我想說,如果一個int是包含在我的ArrayList ordineDopoModifica ...

您檢查是否ArrayList<Persona> ordineDopoModifica包含int。它不,它只包含Persona對象,因此它總是返回false。

更確切地說,equals(Object obj)會失敗在這裏:

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

這是因爲Integer不是Persona一個實例。

+0

是的,但如果我已經在我的arrayLIst ordineDopoModifica中:cod = 13 nome = hello qnt = 3,如果我想查看myArray.contains(cod = 13),我該怎麼辦? – Mikykly

+0

代碼不完整,但它肯定似乎是正確的。 – madth3

+0

@Mikykly遍歷列表,併爲每個'角色'實例,做你想做的檢查。如果遇到碰撞,請返回對象。 – Magnilex