java 中的 .next 和 .getNext() 有什么区别?
What is the difference between .next & .getNext() in java?
我正在为一种算法编写伪代码以交换链表中的节点并有一个快速的问题:.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)
也许你的意思是直接访问字段 next
和使用访问器方法间接访问字段有什么区别 getNext()
,是吗?
理论上直接按名称访问效率更高,因为这是访问对象中数据的最直接方式。但是它违反了封装,因为class的字段应该是隐藏的实现细节。您也无法分离 read/write 访问权限,因为访问修饰符不够精细。
使用附属方法访问是很好的封装。它使您可以自由地处理实现细节,例如将下一个节点存储在文件而不是内存中,而不会影响 class 的用户。您还可以扩展 class,并使用专门用于某个目的的东西覆盖逻辑。
由于封装在面向对象编程中非常重要,因此强烈建议不要直接访问字段,而使用访问器方法是首选方法。
我正在为一种算法编写伪代码以交换链表中的节点并有一个快速的问题:.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)
也许你的意思是直接访问字段 next
和使用访问器方法间接访问字段有什么区别 getNext()
,是吗?
理论上直接按名称访问效率更高,因为这是访问对象中数据的最直接方式。但是它违反了封装,因为class的字段应该是隐藏的实现细节。您也无法分离 read/write 访问权限,因为访问修饰符不够精细。
使用附属方法访问是很好的封装。它使您可以自由地处理实现细节,例如将下一个节点存储在文件而不是内存中,而不会影响 class 的用户。您还可以扩展 class,并使用专门用于某个目的的东西覆盖逻辑。
由于封装在面向对象编程中非常重要,因此强烈建议不要直接访问字段,而使用访问器方法是首选方法。