.next和&;之间有什么区别。java中的getNext()?
我正在为交换链表中节点的算法编写伪代码,我有一个简单的问题:在.next和.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
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,说得好。