如何在 Java 中创建包含在另一个类中的非静态类的对象?



我正在尝试创建一个反转链表的方法。我有一个创建链表的类

public class LinkedList<t> {
public class Node {
t item;
Node next;
}

private Node firstNode;
public Node getFirstNode() { return this.firstNode; }
public void appendToTail(t item){
if(this.firstNode == null){
this.firstNode = new Node();
this.firstNode.item = item;
return;
}
Node current = this.firstNode;
while(current.next != null){
current = current.next;
}
current.next = new Node();
current.next.item = item;
}
}

反转链表的方法在我的"主"类中

public static LinkedList reverseLinkedList(LinkedList<Integer> l){
LinkedList.Node current = l.getFirstNode();
LinkedList<Integer> reverse = new LinkedList<Integer>();
LinkedList.Node head = reverse.getFirstNode();
while(current != null){
LinkedList.Node newHead = new reverse.Node();
newHead.item = current.item;
newHead.next = head;
head = newHead;
current = current.next;
}
return reverse;
}

对于我想添加到新反向链表前面的每个新节点,我需要创建一个包含在"LinkedList"类中的"Node"类的新实例。 "Node"类不能是静态的,因为它的"item"属性设置为与"LinkedList"类型相同的泛型类型。因此,我需要类"LinkedList"的实例,以便我可以访问"Node"类并创建其对象。在上面的代码中,我使用了"LinkedList"上的"反向"实例来做到这一点。但是我收到一个错误,说"包反向不存在"。这一定是因为我试图将其用作软件包。我该如何解决这个问题?

我必须能够通过将"节点"类与"链接列表"分开来解决此问题。还有什么我可以不这样做吗?

更新此行:

LinkedList.Node newHead = new reverse.Node();

,待

LinkedList.Node newHead = reverse.new Node();

如果要求只是反向链接列表,请使用 Collections.reverse 方法,该方法将列表作为参数并返回反向列表。

我认为将Node创建为静态没有问题。 这样做可以解决问题吗? 我更改了类型参数名称,以更清楚地说明要声明的内容以及何时重用现有类型参数。

public class TestList<T> {
private Node<T> head;
private static class Node<X> {
X element;
Node<X> next;
}
public void add( T element ) {
Node<T> node = new Node<T>();
node.element = element;
if( head != null )
node.next = head;
head = node;
}
public T get() {
return head.element;
}
}

class External {
public static <Z> void reverse( TestList<Z> arg ) {
TestList.Node<Z> temp = new TestList.Node<>();
temp.element = arg.get();
// etc.
}
}

相关内容

  • 没有找到相关文章

最新更新