2012-12-25 50 views
0

在java中使用indexOf()函數時應該重寫哪個函數。我有一個數組列表,然後我將一個輸入作爲ID並創建一個包含該ID的對象,並且所有其他元素都爲null,然後我需要傳遞該對象並獲取包含該對象的元素的索引使用indexOf()函數時應該重寫哪個函數

+3

爲什麼你認爲你需要在所有重載函數? – bmargulies

+0

,因爲我需要通過傳遞一個只包含單個元素的對象來獲取索引,這是一個ID,而該對象的所有其他元素爲空 – user1912520

+0

是的,我需要從數組列表中搜索一個對象 – user1912520

回答

5

equals() method

public boolean equals(Object o) { 
    if (o instanceof MyObject) { 
    //id comparison 
    MyObject mo = (MyObject)o; 
    return mo.id.equals(id); 
    } 
    return false; 
} 

更改MyObject上您的課。

記得要改變hashCode()以及@Hovercraft指出。 equals和hashCode一起去(爲他們閱讀javadoc)。否則,你可能會遇到一些令人討厭的,可能很難找到的錯誤。

一個例子:

與Java 7+你可以這樣做:

public int hashCode() { 
    return java.util.Objects.hashCode(id); 
} 
+0

然後,我應該調用的接口 – user1912520

+2

你應該提到'Objects.hashCode()'是Java 7+;)是的,這是2012年,但是... – fge