我可以编写自己的LinkedList并反转它。但我无法反转默认的java.util.LinkedList
我的问题是如何为 java.util.LinkedList 做如下的事情
while (CurrentNode != NULL)
{
Node NextNode = CurrentNode.next;
CurrentNode.next = PreviousNode;
/* repeat the process, but have to reset
the PreviousNode and CurrentNode
*/
PreviousNode = CurrentNode;
CurrentNode = NextNode;
}
Collections.reverse 会为你做这件事。
import java.util.Collections;
// in your function
Collections.reverse(list);
关于手动执行此操作,您无权访问java.util.LinkedList的内部表示形式,因此无法使用公共接口手动执行此操作。
与 C 中每个节点都有一个指向另一个节点的指针的示例不同,Java LinkedList 不会提供指向下一个节点的指针/引用。所有这些事情都是在内部处理的,并从程序员那里抽象出来。这似乎是以最少的努力扭转它的唯一方法。
Java 集合内部有一个有效的算法来对列表进行排序,因此您不必担心这些细节。
使用 Java 集合操作列表和集。这是一个简单的代码片段
import java.util.LinkedList;
import java.util.List;
import java.util.Collections;
public class Reverse {
public static void main(String[] args) {
List<Integer> myList = new LinkedList<Integer>(){{
add(5);
add(8);
add(3);
add(7);
add(1);
}};
System.out.println(myList);
Collections.reverse(myList);
System.out.println(myList);
}
}