LinkedList中的所有元素与添加的元素具有相同的值
问题描述:
我试图学习java中链接列表类的实现。 但每次我调用get方法时,我都会得到Last Node的内容。我无法弄清楚为什么。 的代码如下,LinkedList中的所有元素与添加的元素具有相同的值
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
[[email protected],[email protected],
[email protected]]
3
3
3
我想在一个类中添加一些数据,并创建该类的链接列表。
在此先感谢!
答
为什么你所得到的相同输出的原因是因为你存储同一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);
答
你加入同一个对象一遍又一遍,然后改变它的值。这就是为什么你看到相同的值以及相同的内存地址。
为了解决这个问题,实例化不同的Dummy
对象并将它们放入列表中。
答
问题是您正在更改d
的内部状态并将其添加到LinkedList
多次。您需要创建Dummy
的新实例。
答
它没有显示最后一个节点的内容,但是您已将值赋值为3到同一节点(虚拟)。创建一个Dummy类的新实例并为其分配一个值并将其添加到列表中。这将工作。
请相信以下答案。 – AmitG 2013-03-24 06:02:11