Node <e>在此Linked List Java示例代码中表示什么?

时间:2017-12-26 09:06:25

标签: java generics linked-list nodes

我正在学习链接列表,我不会从我的教科书中理解这个例子。我理解泛型的概念(虽然在这一点上可能不太好)并在我自己的代码中实现了几个泛型类,我已经阅读并观看了很多教程,但我仍然无法理解围绕什么节点&lt; E&gt; 实际上(实际上,实际上它是一种类型?),所以我无法真正测试这段代码。

import java.util.*;

public class SinglyLinkedList<E> {

    private class Node<E> {
        private E element;
        private Node<E> next;

        public Node(E e, Node<E> n) {
            element = e;
            next = n;
        }

        public E getElement() { 
            return element; 
        }

        public Node<E> getNext() { 
            return next; 
        }

        public void setNext(Node<E> n) { 
            next = n; 
        }
    } 
}

我试图创建一个Node对象或一个SinglyLinkedList对象,如下所示:

SinglyLinkedList<E> NodeEl = new SinglyLinkedList<E>();
Node <E> node = new Node<E>();

并将各种对象传递给它们无济于事。我显然遗漏了一些东西,但我无法理解。

1 个答案:

答案 0 :(得分:1)

class SinglyLinkedList<E>表示泛型类型的元素的链接列表。

例如,您可以使用以下内容创建String s的链接列表

SinglyLinkedList<String> list = new SinglyLinkedList<String>();

class Node<E>SinglyLinkedList类的内部类。它表示链表中的单个链接,其中包含单个元素(泛型类型)和对下一个链接的引用。

由于NodeSinglyLinkedList的内部类,因此如果不提供封闭实例的实例(即SinglyLinkedList类的实例),则无法创建它的实例。< / p>

因此你只能写

Node<E> node = new Node<E>();

SinglyLinkedList类的内部实例(即非静态)方法,其中有一个封闭的实例(SinglyLinkedList类)。

也就是说,如果Node应该包含与SinglyLinkedList的元素类型相同类型的元素,那么它不应该是通用的。它可以简单地使用封闭类(SinglyLinkedList)的泛型类型参数:

public class SinglyLinkedList<E> {

    private class Node {
        private E element;
        private Node next;

        public Node(E e, Node n) {
            element = e;
            next = n;
        }

        public E getElement() { 
            return element; 
        }

        public Node getNext() { 
            return next; 
        }

        public void setNext(Node n) { 
            next = n; 
        }
    } 
}