Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么类字段在方法工作后更新其数据_Java_Algorithm_Data Structures_Linked List - Fatal编程技术网

Java 为什么类字段在方法工作后更新其数据

Java 为什么类字段在方法工作后更新其数据,java,algorithm,data-structures,linked-list,Java,Algorithm,Data Structures,Linked List,请帮帮我。 假设我有一个链接列表的链接类。 还有SortedList类,其中有处理第一个类创建的数据的方法 public class Link { public long db; public Link next; public Link(long data){ db=data; } public void displayLink(){ System.out.println(db+" "); } } public class SortedList {

请帮帮我。 假设我有一个链接列表的链接类。 还有SortedList类,其中有处理第一个类创建的数据的方法

public class Link {
public long db;
public Link next;
public Link(long data){
    db=data;
}
public void displayLink(){
    System.out.println(db+" ");
}
}


   public class SortedList {    
   private Link first;  
   public SortedList(){  
   first=null;    
   }
   public void insert(long key){
    Link newLink=new Link(key);
    Link previous=null;
    Link current=first;
    while (current!=null&&key>=current.db){
        previous=current;
        current=current.next;
    }
    if (previous==null){
        first=newLink;
    }else {
        previous.next=newLink;
        newLink.next=current;
    }

  }
public void displayList(){
    System.out.println("List (first-->last): ");
    Link current=first;
    while (current!=null){
        current.displayLink();
        current=current.next;
    }
    System.out.println();
}
  }
insert方法使用第一个字段。 第一个字段将其数据传递给当前字段。 方法与当前字段一起退出后,不会对第一个字段进行任何更改,但更改仍显示在第一个字段中


它是如何发生的,我请求您帮助

插入
的开头,我们将
当前
设置为对
第一个
值的引用。这意味着,此时,
current
first
都是对同一字段的引用

然后,
while
循环从
开始在节点上迭代
,直到我们到达列表的末尾或其键小于
key
的节点。迭代是通过更新当前节点的
next
引用来进行的

现在发生了让你困惑的部分:如果
第一个
空的
(即,我们第一次调用
insert
,下一个操作将通过为其分配一个新值来更新
first
first
现在将引用
newLink
的值,它正是我们在
insert
顶部创建的节点


它有助于像计算机一样用笔和纸,为所有变量绘制一个包含列的表格。您可以使用调试器执行类似操作,在方法开头设置断点,然后“逐步执行”您的代码。

请编辑您的问题以添加此信息。此外,您的问题目前还不能真正理解。请编辑它以使其更清楚。Konrad,抱歉。简而言之,我不明白在insert方法工作后如何更新SortedList类的第一个字段的数据。毕竟,没有任何信息保存在e第一个字段的insert方法。您所说的“毕竟,第一个字段的insert方法中没有保存任何信息”是什么意思?代码确实将信息保存在
first
中,当它执行
first=newLink;
时。如果我们将数据添加到sortedList类中,如此sortedList.insert(1);sortedList.insert(6);并将数据显示到控制台,然后输出如下列表(first-->last):16这里的问题是第一个字段如何存储通过insert方法AAAA传递的所有信息,就像头上的屁股一样。你是一个非常酷的人,即使我小时候解释过,你也能理解我。非常感谢)