我已經看到有一種非常方便的方法可以使用Collections.reverse()
方法來反轉ArrayList
like here,但是我需要爲幾種類型的基本對象實現這種反向操作,至少像我的自定義對象的ArrayList
和List
。所以Collections
不能拯救我的生命,因爲它只能延長使用一種方法。Java - 反轉ArrayList或對象列表的一種通用方法
到目前爲止,我設法讓stg工作(見下面的代碼),但我必須寫兩次:一次爲ArrayList,一次爲List。我將它們命名爲相同,因此使用非常方便,但是一些優化會更加方便:-)。
如何將這兩種方法通用化爲一個(真正的)通用方法?
THX
/**
* Generic Reverse Method for ARRAYLIST using Iterator
* @param ArrayList<Obj_item> notReversed
* @return ArrayList<Obj_item> reversed
*/
@SuppressWarnings("unchecked")
public static <Obj_item> ArrayList<Obj_item> GenReverseArrayByIterator(ArrayList<Obj_item> mylist) {
// ^^^^^^^^^^^^^^^^^^ how to make this generic ?
// Instanciate
ArrayList<Obj_item> tmp = new ArrayList<Obj_item>();
ArrayList<Obj_item> reversed = new ArrayList<Obj_item>();
// Copy original list
tmp = mylist;
// Generate an iterator, starting right after the last element.
@SuppressWarnings("rawtypes")
ListIterator myIterator = tmp.listIterator(tmp.size());
// Iterate in reverse direction
while (myIterator .hasPrevious()) {
reversed.add((Obj_item) myIterator.previous());
}
return reversed;
}
你的方法已經*是*通用的 - 它仍然不清楚爲什麼你不能使用'Collections.reverse()'。另外,您對「原始」這個詞的使用對我來說聽起來是錯誤的...... –
對於錯誤的術語用法,對於我來說,「原始」讀取爲ArrayList等「原始對象」,與自定義對象相反。重點是我必須寫這個方法兩次:一次爲ArrayList,一次爲List。如果可能,我想寫一個單一的方法。 – hornetbzz
你的意思是庫類 - 沒有像原始對象那樣的東西! – berry120