在空的LinkedList中存储一个字符串值


public class LinkedListExplained {

public Node head;
public Node tail;
public int size;
public LinkedListExplained() { // Constructor
head = null;
tail = null;
size = 0;
}
public class Node{ // Inner Class
String value;
Node next;
}
public void add(String value){
Node node = new Node();
node.value = value;
size++;
if (head == null){
head = node;
tail = node;
return;
}
tail.next = node;
tail = node;
}

问题是,当将单个String值存储到空的LinkedList中时,它是否会将相同的值存储两次?一次是头,一次是尾?

否。headtail变量指向同一个Node对象。该对象包含String一次。

如果你正在学习Java,你首先需要理解的是,在Java中,所有看起来像对象的东西实际上都不是对象;它是指向对象的指针。当然,两个指针可能指向同一个对象。

因此,语句public Node head;不声明Node的实例。它声明了一个指向Node实例的指针。这就是为什么以后必须使用new Node();

因此,由于您将headtail指针都设置为指向Node的同一实例,因此可能看起来您有该节点的两个副本,但实际上您没有。您只有一个Node实例,并且有两个指针指向它

相关内容

  • 没有找到相关文章

最新更新