Buenas Ogramar.
Muchas gracias por tu reflexión; es totalmente acertada. He modificado la clase y ahora los cuadrúpedos se crean, cuentan e imprimen en un solo bucle, ahorrando iteraciones y líneas de código. Así es como lo he hecho:
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
public class TestCuadrupedo {
public static void main (String [] args) {
List<Cuadrupedo> lista = new ArrayList<Cuadrupedo>();
Random r = new Random();
String tipo="";
Cuadrupedo temporal;
int sumaLeones=0;
int sumaGatos=0;
int sumaPerros=0;
int sumaElefantes=0;
System.out.println ("Cuadrúpedos cuyo ID es múltiplo de 1000:");
for (int i=0; i<10000; i++) {
int numeroRandom = r.nextInt(4);
switch (numeroRandom) {
case 0: tipo="Elefante"; sumaElefantes++; break;
case 1: tipo="Perro"; sumaPerros++; break;
case 2: tipo="Gato"; sumaGatos++; break;
case 3: tipo="Leon"; sumaLeones++; break;
}
if ((i+1)%1000==0) {
temporal = new Cuadrupedo(i+1, tipo); System.out.print(temporal); lista.add(temporal);
} else {
lista.add(new Cuadrupedo(i+1, tipo));
}
}
System.out.println ("Resumen: hay "+sumaLeones+" leones, "+sumaGatos+" gatos, "+sumaPerros+" perros y "+sumaElefantes+" elefantes.\n");
}
}
¡Un saludo y gracias de nuevo!