我正在尝试学习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());
}
}
我得到的输出是
1
2
[learningLinkedLists.Dummy@3b061299,learningLinkedLists.Dummy@3b061299,
learningLinkedLists.Dummy@3b061299]
3
3
3
我想在类中添加一些数据并创建该类的链接列表。
提前致谢!
答案 0 :(得分: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);
答案 1 :(得分:4)
您将同一个对象一遍又一遍地添加到列表中,然后更改其值。这就是为什么你看到相同的值以及相同的内存地址。
要解决此问题,请实例化不同的Dummy
个对象并将它们放入列表中。
答案 2 :(得分:4)
问题是您要更改d
的内部状态并将其多次添加到LinkedList
。您需要创建Dummy
。
答案 3 :(得分:4)
它不显示最后一个节点的内容,但您已将值3指定给同一节点(Dummy)。创建一个Dummy类的新实例,并为其分配一个值并添加到列表中。这将有效。