LinkedList中的所有元素与添加的元素具有相同的值

Sur*_*shS 0 java linked-list

我试图在java中学习Linked List类的实现.但是每当我调用get方法时,我都会获得Last Node的内容.我无法弄清楚原因.代码如下,

package learningLinkedLists;
import java.util.LinkedList;

public class LinkedLists {
public static void main(String[] args) {
    Dummy d = new Dummy(0);
    LinkedList<Dummy> ll = new LinkedList<Dummy>();


    d.SetData(1);
    d.printData();
    ll.add(d);


    d.SetData(2);
    d.printData();
    ll.add(d);

    d.SetData(3);
    ll.add(d);

    System.out.println(ll);
    System.out.println(ll.get(1).data);
    System.out.println(ll.get(0).data);
    System.out.println(ll.size());
}

}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是,

1
2
[learningLinkedLists.Dummy@3b061299,learningLinkedLists.Dummy@3b061299,
learningLinkedLists.Dummy@3b061299]
3
3
3
Run Code Online (Sandbox Code Playgroud)

我想在类中添加一些数据并创建该类的链接列表.

提前致谢!

Aka*_*ash 8

您获得相同输出的原因是因为您存储相同的输出object twice,创建2个不同dummy objs然后存储它们

应该是这样的

//Creating the first obj
Dummy d = new Dummy(0);
//Creating second ojj
Dummy d2 = new Dummy(0);
LinkedList<Dummy> ll = new LinkedList<Dummy>();


//Since d and d2 are now 2 different objects, a change to d would not have a impact on d2 and vice versa
d.SetData(1);
d2.SetData(2);
ll.add(d);
ll.add(d2);

System.out.println(ll.get(1).data);
System.out.println(ll.get(0).data);
Run Code Online (Sandbox Code Playgroud)