但是,如果放在 ArrayList 的 Element Object 不是 String、Integer 之類的的話。
想使用 indexOf,就必須 Override 該 Element Object 的 equals!
因為,在 ArrayList 的 indexOf 中,
用來比對物件是否等值的方法其實就是呼叫 Element Object 裡面的 equals。
以下範例:
//------------------------------------------------------------------- import java.util.ArrayList; public class test { public static void main(String[] args) { // 自訂的 Element Object。 class Data_Cell { public int Data_1; public int Data_2; Data_Cell(int D1 , int D2) { Data_1 = D1; Data_2 = D2; } // 這裡要 Override 原本的 equals,好讓 indexOf 可以拿來用。 @Override public boolean equals(Object o) { Data_Cell t = (Data_Cell) o; if( !(Data_1 == t.Data_1 && Data_2 == t.Data_2) ) return false; else return true; } } // 宣告 ArrayList。 ArrayList <Data_Cell> Data = new ArrayList <Data_Cell> (); // 加入一些測試用的資料給 ArrayList。 Data.add(new Data_Cell(1 , 2)); Data.add(new Data_Cell(3 , 4)); Data.add(new Data_Cell(5 , 6)); // 想搜尋的物件 Data_Cell temp_Cell = new Data_Cell(3 , 4); // 使用 indexOf 搜尋。 int Add_Index = Data.indexOf(temp_Cell); // 顯示出結果。 System.out.print(Add_Index + "\n"); return; } } //-------------------------------------------------------------------
結果會印出 1 !
沒有留言:
張貼留言