Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.next和&;之间有什么区别。java中的getNext()?_Java_Linked List - Fatal编程技术网

.next和&;之间有什么区别。java中的getNext()?

.next和&;之间有什么区别。java中的getNext()?,java,linked-list,Java,Linked List,我正在为交换链表中节点的算法编写伪代码,我有一个简单的问题:在.next和.getNext()之间有区别吗 一种是我知道的方法,但我想知道它们是否相同: 如果不是,你能解释一下为什么一个比另一个更有效率吗?谢谢大家! Algorithm swap(x, y): Node n <-- head while( n.getNext() != x ) do n <-- n.getNext() Node v <-- y.getNext() n.setNext(y) y.setNe

我正在为交换链表中节点的算法编写伪代码,我有一个简单的问题:在.next和.getNext()之间有区别吗

一种是我知道的方法,但我想知道它们是否相同:

如果不是,你能解释一下为什么一个比另一个更有效率吗?谢谢大家!

Algorithm swap(x, y):
Node n <-- head
while( n.getNext() != x ) do
    n <-- n.getNext()
Node v <-- y.getNext()
n.setNext(y)
y.setNext(x)
x.setNext(v)

----------------------

Algorithm swap(x, y):
Node n <-- head
while( n.next != x ) do
    n <-- n.next
Node v <-- y.next
n.setNext(y)
y.setNext(x)
x.setNext(v)
算法交换(x,y):

Node n也许您的意思是直接访问字段
next
,与使用访问器方法
getNext()
间接访问字段有什么区别,是吗

从理论上讲,通过名称直接访问更有效,因为它是访问对象中数据的最直接方式。但它违反了封装,因为类的字段应该隐藏实现细节。您还不能分离读/写访问,因为访问修饰符不够精细

使用附件方法访问是良好的封装。它使您可以随意处理实现细节,例如将下一个节点存储在文件中而不是内存中,而不会影响类的用户。您还可以扩展该类,并使用专门用于特定目的的内容重写逻辑


由于封装在面向对象编程中非常重要,因此强烈反对直接访问字段,使用访问器方法是首选方法。

什么是
算法
节点
?这看起来像伪代码,
next
是下一个节点的字段,
get/setNext
是getter/setter。您是否询问字段访问和getter方法之间的区别?LinkedList中没有您引用的方法。这是伪代码,是访问“next”成员或调用“getNext”函数应该不重要,因为您试图表达代码的意图,而不是精细实现的细节。此外,当您试图切换到链表时,您可以简单地切换“head”“,而不是每个元素都是单独的。@谢谢您。你能详细解释一下交换头部是什么意思吗?如果我有一个列表,比如说50个元素,想交换2个随机元素呢?谢谢@janos,说得好。