反转默认的 Java 链接列表



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

相关内容

  • 没有找到相关文章

最新更新