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

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

最佳答案

也许您的意思是直接访问字段 next 和使用访问器方法 getNext() 间接访问字段之间有什么区别,是这样吗?

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

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

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

关于java - java中.next和.getNext()有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085997/

相关文章:

java - 使用新版本的 Gradle 和 JDK 运行旧版本的 FindBugs

java - 使用Hadoop/HDFS进行100万个生物特征(小型)文件比较

java - 如何在 Eclipse 中查找给定类的哪些子类实现了特定接口(interface)?

java - Sonarcloud 未被授权使用 Travis CI 和 Maven

c++ - 交换单链表节点创建一个无限循环

c++ - 我不明白为什么这个函数 "returns a pointer from the list"

Java - 如何循环遍历 map 寻找另一个类的实例

python - Python LinkedList 中的错误内存分配

使用指针的动态 LinkedList 的 push() 和 pop() 方法的 C++ 问题

java - 如何从java中的链表中删除一个对象?