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接口
答案 0 :(得分:4)
public static <T> List<T> arrayListReverse(List<T> lst) {
Collections.reverse(lst);
return lst;
}
答案 1 :(得分:3)
<span class="controller__legend {{if allowEdit 'allow-edit' 'disable-edit'}}"> Edit </span>
应为<T>
:
T
答案 2 :(得分: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;
}
答案 3 :(得分:0)
您也可以使用:
ArrayList reversed = new ArrayList();
reversed=Collections.reverse(startArray);
public static void reverse(列表列表)
反转指定列表中元素的顺序。
此方法以线性时间运行。
<强>参数:强>
list - 要反转其元素的列表。
<强>抛出:强>
UnsupportedOperationException - 如果指定的列表或其list-iterator不支持set操作。
答案 4 :(得分:0)
如果您确实希望该方法返回相同类型的列表(作为参数给出),请使用以下内容:
public static <T,L extends List<T>> L reverse(L list){
Collections.reverse(list);
return list;
}
如果您传递字符串向量,这将返回一个 Vector<String>
。
如果你传递一个 ArrayList 的东西,它会返回一个 ArrayList<Something>
。
当您传递 Doom 的 LinkedList 时,它将返回一个 LinkedList<Doom>
。
我想,你懂的。
顺便说一句,Madushan Perera`s 答案也将返回与传递相同的类型,但在这种情况下,如果分配给原始变量,则必须进行强制转换。