java - head=head.getNext() 和 head=current.getNext() 有什么区别?

标签 java generics setter getter singly-linked-list

我想实现一个 LinkedListremove 方法,该方法可以删除任何特定位置的项目,但在本例中,我最感兴趣的是删除列表开头(第 0 个位置)的项目。

我的代码适用于 n 大于零的值,因此我为 n==0 编写了一个 if 语句,但在我用 google 搜索答案之前无法理解为什么它不起作用,对我来说,它看起来与我的类似写。

public class LinkedList<E> extends Node<E>{
public LinkedList(){}
public Node<E> head;
//removes node at n and returns contents of removed node; 
public E remove(int n){
    Node<E> current = head; T info;
    if(n==0){info=current.getInfo();
        head=current.getNext();return info;}
    }
}

我最初的声明是 head=head.getNext() 而不是 head=current.getNext() 因此我的问题。两者有什么区别?

它们是否等效但执行方式不同? 谢谢

最佳答案

如果head的值被分配给current(就像这里一样),它们应该是等价的。因为它们是对象,而不是基元,所以将一个对象分配给另一个对象会使它们都引用同一个对象。因此,调用 head.getNext()current.getNext() 都应该返回对同一对象的引用。

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

相关文章:

Java 8 : Automatically composite default methods of multiple interfaces

java - 获取异常 java.lang.NoClassDefFoundError : org/springframework/transaction/interceptor/TransactionInterceptor while executing

c# - 通用虚拟方法 - 忽略重写方法

ios - Swift:CoreData NSManagedObject 的自定义 setter

c# - 检查是否已设置类属性

java - 处理 "Activity has been destroyed"(java.lang.IllegalStateException) 异常?

c# - 实现扩展方法来过滤 IEnumerable<T> 会产生一些错误

c# - VS 2015 方法重载解析行为

c++ - lambda 函数的 setter ?

java - 如何获取有关标记显示的地点的信息