反转默认的Java LinkedList

时间:2014-11-15 12:15:03

标签: java linked-list

我可以编写自己的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;  
}

2 个答案:

答案 0 :(得分:3)

Collections.reverse会为你做。

import java.util.Collections;

// in your function
Collections.reverse(list);

关于手动执行此操作,您无法访问java.util.LinkedList的内部表示,因此您无法使用公共接口手动执行此操作。

答案 1 :(得分:1)

与C中的示例不同,其中每个节点都有指向另一个节点的指针,Java LinkedList不会提供指向下一个节点的指针/引用。所有这些都是内部处理的,并从程序员中抽象出来。这似乎是用最少的努力扭转它的唯一方法。

Java Collections内部有一个有效的算法来对列表进行排序,因此您不必担心这些细节。

使用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);
    }
}