我已经看到有一种非常方便的方法来反转,ArrayList
就像这里使用Collections.reverse()
方法一样,但是我需要为几种类型的原始对象实现这样的反转操作,至少ArrayList
和List
我的自定义对象一样。所以Collections
无法挽救我的生命以延长使用单一方法。
到目前为止,我设法让 stg 工作(见下面的代码),但我必须写两次:一次用于 ArrayList,一次用于 List。我将它们命名为相同,因此使用非常方便,但是一些..优化会更方便:-)。
如何将这两种方法通用化为一个(真正的)通用方法?
谢谢
/**
* 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;
}