如何在Java中读取两个点运算符?

时间:2019-02-19 20:29:33

标签: java data-structures linked-list

我目前正在阅读双向链表,但我似乎不了解这行代码。这本书称其为两点运算符,并说它是单点运算符的自然扩展,但我不太清楚这明确意味着什么。

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

.next.previous到底指向这里是什么?

3 个答案:

答案 0 :(得分:1)

基本上,您正在访问已定义类型的可见属性。有关示例,请参见以下代码:

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)

您没有使用getter和setter。 “两点运算符”仅访问每个节点的已定义属性。因此,当您说current.next.previous时,您将直接从那些特定的Node内部获取属性。

更多详细信息::从当前的下一个节点(当前节点中名为“ next”的节点)中,再获取上一个节点(从“ next”节点中名为“ previous”的节点)节点名为“当前”)。

答案 1 :(得分:0)

这样看:

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

它只是访问“下一个”链接的“上一个”,而是内联编写的。 在此特定示例中,它指向其“下一个”链接中的引用(本身),并将其替换为newLink。这段代码似乎将current替换为newLink

答案 2 :(得分:0)

对于双链列表,下一个指向列表中的下一个节点,并为您提供下一个节点。现在,为了方便起见,您可以将current.next替换为nextNode之类的变量,以使其变为nextNode.previous,这很容易理解,它指向nextNode的上一个元素,即当前Node本身。