Я новичок в Java, и я нашел эту реализацию связанного списка ниже. В основном методе мы создаем экземпляр LinkList с именем theLinkedList и, используя его, вызываем метод insertFirstLink 4 раза. Что делает метод InsertFirstLink, так это создает экземпляр Link с именем newLink. Когда мы вызываем insertFirstLink 4 раза.
Создает ли этот метод 4 экземпляра Link с одинаковым именем (newLink)? Как это возможно? Мы не можем создавать объекты с одинаковыми именами, верно? Что мне не хватает? Что мне нужно изучить, чтобы понять эту часть?
Спасибо, ребята. Я понял свою проблему. После каждого выполнения новая переменная ссылки уничтожается, но каждая уничтоженная переменная имеет ссылку и похожа на строку. Мы всегда можем пройти по линии и найти нужный узел.
public class Link {
public String bookName;
public int millionsSold;
public Link next;
public Link(String bookName, int millionsSold) {
this.bookName = bookName;
this.millionsSold = millionsSold;
}
public static void main(String[] args) {
LinkList theLinkedList = new LinkList();
theLinkedList.insertFirstLink("Don Quixote",500);
theLinkedList.insertFirstLink("A Tale of two cities",200);
theLinkedList.insertFirstLink("The Lord Of The Rings",150);
theLinkedList.insertFirstLink("Harry Potter",1000);
}
}
class LinkList {
public Link firstLink;
LinkList() {
firstLink = null;
}
public boolean isEmpty() {
return(firstLink == null);
}
public void insertFirstLink(String bookName, int millionsSold) {
Link newLink = new Link(bookName, millionsSold);
newLink.next = firstLink;
firstLink = newLink;
}
}
newLink
— это локальная ссылка на вновь созданный объект. Я предлагаю вам просмотреть типы переменных и области действия. - person PM 77-1   schedule 01.09.2017newLink
на самом деле не является объектом как таковым. Это переменная, содержащая ссылку на объект. Эта переменная может указывать на объект X в определенный момент, а позже на объект Y. Она может даже вообще не указывать на объект, тогда говорят, что переменная содержит ссылку null. - person Milack27   schedule 01.09.2017while(currentLink != null) { currentLink.printLink(); currentLink = currentLink.nextLink; }
Теперь вы видите, что переменная (дескриптор тех данных, которые вы добавили в список) была уничтожена. Таким образом, вы не можете получить данные f. е. на 5-м месте в LinkedList, если вы не перебираете их. - person Guillotine   schedule 01.09.2017