2014-03-01 37 views
2

我創造了我返回元素的第一次出現的索引列表以這種方式方法不起作用,由於不兼容的類型

public int getOccurrenceIndex(ArrayList<Object> list, Object o){ 
     Object tmp; 
     for(int i=0; i<list.size(); i++){ 
      tmp=list.get(i); 
      if(tmp.equals(o)){ 
       return i; 
      } 
     } 
     return -1; 
    } 

我想用一個方法此具有不同的ArrayList例如用

ArrayList<Car> carList, Car c 

ArrayList<Person> personList, Person p 

沒有爲每種類型定義單獨的方法

任何建議?

回答

1

使該方法通用。此外,而不是作爲ArrayList參數,使用List,以便它可以與任何List執行工作:

public <T> int getOccurrenceIndex(List<T> list, T o){ 
    T tmp; 
    for(int i=0; i<list.size(); i++){ 
     tmp = list.get(i); 
     if(tmp.equals(o)){ 
      return i; 
     } 
    } 
    return -1; 
} 

順便說一句,你爲什麼要編寫自己的方法,而不是使用ArrayList#indexOf(Object)方法?

+0

感謝,是的,我可以使用的indexOf但因爲我必須做一些其他的東西以同樣的方式,我用這個作爲樣本解決這個問題。 – AndreaF

0

使用Java泛型,現在你可以通過下面的任何類:

public <T> int getOccurrenceIndex(ArrayList<T> list, T o){ 
     T tmp; 
     for(int i=0; i<list.size(); i++){ 
      tmp=list.get(i); 
      if(tmp.equals(o)){ 
       return i; 
      } 
     } 
     return -1; 
    }