**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
4个月前关门了。
改进这个问题
我知道如何将对象添加到 ArrayList
.
class LightBulb {
int position;
LightBulb(int position) {
this.position = position;
}
}
public class MainBulb
{
public static void main(String[] args) {
LightBulb ob1 = new LightBulb(1);
LightBulb ob2 = new LightBulb(2);
LightBulb ob3 = new LightBulb(3);
LightBulb ob4 = new LightBulb(4);
LightBulb ob5 = new LightBulb(5);
ArrayList<LightBulb> list = new ArrayList<LightBulb>();
list.add(ob1);
list.add(ob2);
list.add(ob3);
list.add(ob4);
list.add(ob5);
}
}
有没有一种方法可以在运行时使用循环添加对象,如下所示?
int n = 100;
for(int i=0;i<n;i++) {
LightBulb ob1 = new LightBulb(i); // But here it is wrong as we are adding same object to the ArrayList
list.add(ob1);
}
3条答案
按热度按时间pwuypxnk1#
你的代码实际上是在输出。我相信您对为每个新创建的对象指定相同的对象名“ob1”感到困惑。如果直接将动态创建的类对象添加到arraylist中而不创建对它的引用,则可以解决此问题。按如下所示更改for循环。
我使用i+1进行初始化,因为在您的问题中,您是使用值1到5进行初始化,而不是使用值0到4
mzaanser2#
java中的new操作符总是创建一个新的java对象。你的例子就是创造新的灯泡。它们不是同一个物体。
nr7wwzry3#
每次都要添加不同的对象。只要打印和检查,一旦你会得到清晰。根据我对你问题的理解,我将解释一个可能的误解。
我想您会感到困惑,因为您正在添加具有相同变量名的对象
ob1
. 在java中,当您使用new
关键字,它将创建一个新示例,因此每次迭代都将获得新对象。考虑一下在第一次迭代中是否有lightbulb1。
但在第二次迭代中,ob1变量指向值为2的新对象,即
如果循环结束,将重复此操作直到结束。
因此,在每次迭代结束时,您的列表中会充满不同的对象。