有什么区别.next& java中的.getNext()?

时间:2015-10-12 16:32:54

标签: 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.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)

1 个答案:

答案 0 :(得分:2)

也许你的意思是直接访问字段next和使用访问方法getNext()间接访问字段之间的区别是什么?

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

使用附件方法进行访问是一种很好的封装。它使您可以自由地处理实现细节,例如将下一个节点存储在文件而不是内存中,而不会影响类的用户。您还可以扩展该类,并使用专门用于某种目的的东西覆盖逻辑。

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

相关问题