2015-11-13 51 views
0
public static <T> List<T> arrayListReverse(List<T> lst) { 
    ArrayList reversed= new ArrayList(); 
    for (int i=lst.size()-1;i>=0;i--){ 
    <T> t= lst.get(i); 
    reversed.add(t); 
    } 
return reversed; 
} 

我希望能夠返回一個列表,它是原始列表的反轉版本。它應該能夠適用於任何類型。當涉及到t = input.get(i)時,我總是收到錯誤; 編輯:我想只能用List接口顛倒一個通用列表?

+4

東西只寫'T'和在'噸= lst.get(i)不'';'。這是因爲變量的類型是'T'。 – Tunaki

+7

除非進行練習,否則使用'Collections.reverse'。 –

+0

謝謝。然而,我得到這個:找到2個警告:警告:未經檢查的調用添加(E)作爲原始類型java.util.ArrayList的成員警告:未經檢查的轉換所需:java.util.List found:java.util。 ArrayList - – pythonbeginner4556

回答

3

<T>應該T

public static <T> List<T> arrayListReverse(List<T> lst) { 
    ArrayList reversed= new ArrayList(); 
    for (int i=lst.size()-1;i>=0;i--){ 
     T t = lst.get(i); 
     reversed.add(t); 
    } 
    return reversed; 
} 
+0

謝謝。不過,我得到這個:找到2個警告: 警告:未經檢查的通話添加(E)作爲原料類型的成員的java.util.ArrayList 警告:選中需要轉換 :java.util.List的 發現:java.util.ArrayList – pythonbeginner4556

+0

nvm計算出來 – pythonbeginner4556

+0

你只需要反轉列表或反轉列表中的字符串的反轉呢? –

0

您也可以使用此:

ArrayList reversed = new ArrayList(); 
reversed=Collections.reverse(startArray); 

Documentation:

公共靜態void reverse(列表清單)

反轉指定列表中元素的順序。

此方法以線性時間運行。

參數:

列表 - 其元素被逆轉的名單。

拋出:

UnsupportedOperationException - 如果指定列表或其列表迭代器不支持set操作。

4
public static <T> List<T> arrayListReverse(List<T> lst) { 
    Collections.reverse(lst); 
    return lst; 
} 
1

在你的代碼<T> t =應該只是T t =,但你也可以使用一個for-each loop,當你重複着添加到您的reversed的前面。而且,您不應使用raw types(您沒有爲reversed指定通用名稱),並且您可以使用鑽石運算符<>。你可以用你的輸入初始化你的輸出列表。像

public static <T> List<T> arrayListReverse(final List<T> lst) { 
    List<T> reversed = new ArrayList<>(lst.size()); 
    for (T t : lst) { 
     reversed.add(0, t); 
    } 
    return reversed; 
}