[英]Reverse a generic list?
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 界面
public static <T> List<T> arrayListReverse(List<T> lst) {
Collections.reverse(lst);
return lst;
}
<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;
}
在您的代码中<T> t =
应该只是T t =
,但是您也可以使用for-each
循环并在向前迭代时添加到您的reversed
的前面。 而且,您不应该使用原始类型(您没有为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;
}
你也可以使用这个:
ArrayList reversed = new ArrayList();
reversed=Collections.reverse(startArray);
public static void reverse(List list)
反转指定列表中元素的顺序。
此方法在线性时间内运行。
参数:
list - 要反转其元素的列表。
抛出:
UnsupportedOperationException - 如果指定的列表或其列表迭代器不支持设置操作。
如果您确实希望该方法返回相同类型的列表(作为参数给出),请使用以下命令:
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 的答案也将返回与传递相同的类型,但在这种情况下,如果分配给原始变量,则必须进行强制转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.