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



我正在为一种算法编写伪代码来交换链表中的节点,并有一个快速的问题:.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()间接访问字段之间的区别是什么,是吗?

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

使用附件方法访问是很好的封装。它允许您随意修改实现细节,例如将下一个节点存储在文件而不是内存中,而不会影响类的用户。您还可以扩展类,并使用特定目的的内容覆盖逻辑。

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

相关内容

  • 没有找到相关文章

最新更新