2015-11-13 65 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; 
}