Как мне прочитать два точечных оператора в Java? - PullRequest
0 голосов
/ 19 февраля 2019

Я сейчас читаю в двухсвязных списках, но мне кажется, что я не понимаю эту строку кода.Книга называет его оператором с двумя точками и говорит, что это естественное расширение оператора с одной точкой, но я не слишком уверен, что это явно означает.

newLink.next = current.next; 
current.next.previous = newLink;

Что именно означает .next.previous, указывающее здесь

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

В случае двусвязного списка, следующий указывает на следующий узел в списке и дает вам следующий узел.Теперь для удобства вы можете заменить current.next на переменную наподобие nextNode, чтобы она стала nextNode.previous, что намного проще понять, что она указывает на предыдущий элемент nextNode, который является текущим самим узлом.

0 голосов
/ 19 февраля 2019

По сути, вы обращаетесь к видимому свойству определенного типа.См. Этот код для примера:

Node current = null ; // defined to working node, null on new list 
Node head = null ; // defined during list creation
Node tail = null ; // defined during list extension
Node newLink = new Node () ; // for example -- in practice this would 
                             // be created on insert

public Node { 
    Node next = null ; 
    Node previous = null ; 
    Object data = null ; 
} 

// some ops here to traverse, insert, replace (and always null or end check)

Вы не используете геттеры и сеттеры.«Оператор двух точек» просто обращается к определенным свойствам каждого узла.Поэтому, когда вы говорите, current.next.previous, вы получаете свойства непосредственно из этих конкретных узлов.

Более подробно: Из текущего следующего (Узел с именем «следующий» в Узле с именем current) вы затем получаете предыдущий (Узел с именем «предыдущий» от Узла с именем «Следующий»).в узле с именем «текущий»).

0 голосов
/ 19 февраля 2019

Посмотрите на это следующим образом:

Link t = current.next; //gives you another link which is next for the current link
t.previous = newLink;

Он просто обращается к «предыдущей» ссылке «следующая», он просто написан внутри строки.В этом конкретном примере он указывает на ссылку (сам по себе) в своей «следующей» ссылке и заменяет ее на newLink.Кажется, этот код заменяет current на newLink.

...