over for java object arraylist iteration

java - for - ¿Cómo iterar a través de ArrayList of Objects of ArrayList of Objects?



java arraylist next (6)

Usando un ejemplo:

Digamos que tengo una llamada de clase Gun . Tengo otra clase llamada Bullet .

Class Gun tiene un ArrayList of Bullet .

Para iterar a través del Arraylist of Gun lugar de hacer esto:

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

Simplemente podemos iterar a través del ArrayList of Gun como tal:

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

Ahora, quiero iterar e imprimir todas las Bullet de mi tercer objeto Gun :

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));

Ahora mi pregunta es: en lugar de usar el for-loop convencional, ¿cómo puedo imprimir la lista de objetos de pistola utilizando la iteración de ArrayList?


Al usar Java8 sería más fácil y solo un trazador de líneas único.

gunList.get(2).getBullets().forEach(n -> System.out.println(n));


Desea seguir el mismo patrón que antes:

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

En este caso sería:

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


Editar:

Bueno, editó su publicación.

Si un objeto hereda Iterable, tiene la posibilidad de utilizar el ciclo for-each como tal:

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

Entonces, en su caso, si desea actualizar sus armas y sus balas:

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 } }

Primero obtén tu tercer objeto Gun:

Gun g = gunList.get(2);

Luego itera sobre las balas del tercer arma:

ArrayList<Bullet> bullets = g.getBullets(); for(Bullet b : bullets) { //necessary code here }


Podemos hacer un ciclo anidado para visitar todos los elementos de los elementos en su lista:

for (Gun g: gunList) { System.out.print(g.toString() + "/n "); for(Bullet b : g.getBullet() { System.out.print(g); } System.out.println(); }


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


int i = 0; // Counter used to determine when you''re at the 3rd gun for (Gun g : gunList) { // For each gun in your list System.out.println(g); // Print out the gun if (i == 2) { // If you''re at the third gun ArrayList<Bullet> bullets = g.getBullet(); // Get the list of bullets in the gun for (Bullet b : bullets) { // Then print every bullet System.out.println(b); } i++; // Don''t forget to increment your counter so you know you''re at the next gun }