Java - 反转ArrayList或对象列表的单一泛型方法

hor*_*bzz 0 java arrays reverse android generic-programming

我已经看到有一种非常方便的方法来反转ArrayList 像这里使用Collections.reverse()方法,但我需要为几种类型的原始对象(至少ArrayListList我的自定义对象)实现这样的反向操作.因此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;
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*ora 8

Collections.reverse需要一个List<?>.ArrayListimplements List- 您可以在ArrayList任何List实现上使用该方法.除非我误解了这个问题,否则你所做的事情似乎完全没必要.

  • @Bill这应该无关紧要,因为对象没有被排序 - 只是顺序颠倒了. (3认同)