在java中向arraylist动态添加类对象

66bbxpm5  于 2021-07-05  发布在  Java
关注(0)|答案(3)|浏览(437)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

4个月前关门了。
改进这个问题
我知道如何将对象添加到 ArrayList .

  1. class LightBulb {
  2. int position;
  3. LightBulb(int position) {
  4. this.position = position;
  5. }
  6. }
  7. public class MainBulb
  8. {
  9. public static void main(String[] args) {
  10. LightBulb ob1 = new LightBulb(1);
  11. LightBulb ob2 = new LightBulb(2);
  12. LightBulb ob3 = new LightBulb(3);
  13. LightBulb ob4 = new LightBulb(4);
  14. LightBulb ob5 = new LightBulb(5);
  15. ArrayList<LightBulb> list = new ArrayList<LightBulb>();
  16. list.add(ob1);
  17. list.add(ob2);
  18. list.add(ob3);
  19. list.add(ob4);
  20. list.add(ob5);
  21. }
  22. }

有没有一种方法可以在运行时使用循环添加对象,如下所示?

  1. int n = 100;
  2. for(int i=0;i<n;i++) {
  3. LightBulb ob1 = new LightBulb(i); // But here it is wrong as we are adding same object to the ArrayList
  4. list.add(ob1);
  5. }
pwuypxnk

pwuypxnk1#

你的代码实际上是在输出。我相信您对为每个新创建的对象指定相同的对象名“ob1”感到困惑。如果直接将动态创建的类对象添加到arraylist中而不创建对它的引用,则可以解决此问题。按如下所示更改for循环。

  1. int n = 100;
  2. for(int i=0;i<n;i++) {
  3. list.add(new LightBulb(i+1);
  4. }

我使用i+1进行初始化,因为在您的问题中,您是使用值1到5进行初始化,而不是使用值0到4

mzaanser

mzaanser2#

java中的new操作符总是创建一个新的java对象。你的例子就是创造新的灯泡。它们不是同一个物体。

nr7wwzry

nr7wwzry3#

每次都要添加不同的对象。只要打印和检查,一旦你会得到清晰。根据我对你问题的理解,我将解释一个可能的误解。
我想您会感到困惑,因为您正在添加具有相同变量名的对象 ob1 . 在java中,当您使用 new 关键字,它将创建一个新示例,因此每次迭代都将获得新对象。
考虑一下在第一次迭代中是否有lightbulb1。

  1. ob1=lightbulb1.

但在第二次迭代中,ob1变量指向值为2的新对象,即

  1. ob1=lightbulb2

如果循环结束,将重复此操作直到结束。
因此,在每次迭代结束时,您的列表中会充满不同的对象。

相关问题