如何循环访问数组对象列表 的对象列表 对象列表?

2022-08-31 22:33:19

举个例子:

假设我有一个班级电话。我有另一个班级电话。GunBullet

类的数组列表为 。GunBullet

循环访问 .. 的数组列表。而不是这样做:Gun

ArrayList<Gun> gunList = new ArrayList<Gun>();
for (int x=0; x<gunList.size(); x++)
    System.out.println(gunList.get(x));

我们可以简单地循环访问数组列表,如下所示:Gun

for (Gun g: gunList) System.out.println(g); 

现在,我想迭代并打印出我所有的第三个对象:BulletGun

for (int x=0; x<gunList.get(2).getBullet().size(); x++)  //getBullet is just an accessor method to return the arrayList of Bullet 
    System.out.println(gunList.get(2).getBullet().get(x));

现在我的问题是:而不是使用传统的for循环,我如何使用ArrayList迭代打印出枪支对象列表?


答案 1

您希望遵循与以前相同的模式:

for (Type curInstance: CollectionOf<Type>) {
  // use currInstance
}

在这种情况下,它将是:

for (Bullet bullet : gunList.get(2).getBullet()) {
   System.out.println(bullet);
}

答案 2

编辑:

好吧,他编辑了他的帖子。

如果对象继承了可迭代对象,则可以按如下方式使用 for-each 循环:

for(Object object : objectListVar) {
     //code here
}

因此,就您而言,如果您想更新枪支及其子弹:

for(Gun g : guns) {
     //invoke any methods of each gun
     ArrayList<Bullet> bullets = g.getBullets()
     for(Bullet b : bullets) {
          System.out.println("X: " + b.getX() + ", Y: " + b.getY());
          //update, check for collisions, etc
     }
}

首先获取你的第三个枪对象:

Gun g = gunList.get(2);

然后迭代第三把枪的子弹:

ArrayList<Bullet> bullets = g.getBullets();

for(Bullet b : bullets) {
     //necessary code here
}