我正在学习链接列表,我不会从我的教科书中理解这个例子。我理解泛型的概念(虽然在这一点上可能不太好)并在我自己的代码中实现了几个泛型类,我已经阅读并观看了很多教程,但我仍然无法理解围绕什么节点< E> 实际上(实际上是,实际上它是一种类型?),所以我无法真正测试这段代码。
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>();
并将各种对象传递给它们无济于事。我显然遗漏了一些东西,但我无法理解。
答案 0 :(得分:1)
class SinglyLinkedList<E>
表示泛型类型的元素的链接列表。
例如,您可以使用以下内容创建String
s的链接列表
SinglyLinkedList<String> list = new SinglyLinkedList<String>();
class Node<E>
是SinglyLinkedList
类的内部类。它表示链表中的单个链接,其中包含单个元素(泛型类型)和对下一个链接的引用。
由于Node
是SinglyLinkedList
的内部类,因此如果不提供封闭实例的实例(即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;
}
}
}