我想对图形建模,并这样做:
class A {
private LinkedList<A> list;
[...]
public setList(LinkedList<A> l) {
this.list = l;
}
}
static void genCon (LinkedList<A> rlist) {
for(int i=0; i<rlist.size(); i++) {
A temp = rlist.get(i);
LinkedList<A> slist = new LinkedList<A>(rlist.subList(0, rlist.size()));
temp.setList(slist);
}
}
然后在main中调用genCon(rlist),但是rlist的所有对象应该都初始化了它们的列表(并且等于rlist的改组版本),其中一些似乎是空的,没有一致的模式(即,不是每个n或可重复模式),但完全是随机的。
起初我以为A temp = rlist.get(i)
并没有给我索引i的对象的浅表副本,但是使用==
进行的身份检查返回true,因此,如果我没有记错的话,这意味着这两个变量具有相同的引用,那不应该是导致问题的原因吗?
然后,我认为这可能是一个优化问题,也许eclispe尝试并行执行操作,并且以某种方式随机破坏了初始化?
我试图逐步进行处理,但是似乎找不到我搞砸的地方。
我想念什么?
编辑:
主要功能如下:
public static void main(String[] args) {
LinkedList<A> a_list = generateAList(20);
genCon(a_list);
for(int i=0; i<a_list.size(); i++) {
System.out.println(a_list.get(i).toString());
}
}
a_list已正确初始化。尝试打印对象时,在以下循环中发生问题。 因为它仅用于测试,所以main与genCon()atm位于同一类。
generateAList()看起来像这样:
static public LinkedList<A> generateAList(int n) {
LinkedList<A> a_list = new LinkedList<A>();
for(int i=0; i<n; i++) {
ap_list.add(A.rand()); // A.rand() is just a static function that return an instance of A with randomly set values and an unitialized list.
}
return ap_list;
}