我正在学习链接列表,但我不明白教科书上的这个例子。我理解泛型的概念(尽管目前可能还不是很好),并在自己的代码中实现了几个泛型类,并且我已经阅读和观看了很多教程,但我仍然无法理解什么Node< 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>();
并将各种对象传递给它们都无济于事。我显然错过了一些东西,但我不明白是什么。
最佳答案
class SinglyLinkedList<E>
表示泛型类型元素的链接列表。
例如,您可以创建 String
的链接列表与:
SinglyLinkedList<String> list = new SinglyLinkedList<String>();
class Node<E>
是 SinglyLinkedList
的内部类类(class)。它表示链表中的单个链接,其中包含单个元素(通用类型)和对下一个链接的引用。
自 Node
是 SinglyLinkedList
的内部类,如果不提供封闭实例的实例(即 SinglyLinkedList
类的实例),则无法创建它的实例。
因此你只能这样写
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;
}
}
}
关于java - Node<E> 在此链表 Java 示例代码中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976203/