Java for loop para crear n cantidad de objeto
Pregunta
Necesito ayuda. Quiero crear un bucle for que cree n número de objetos de una clase y luego los agregue a una lista de matrices. Algo como esto:
//Player is a custom class
ArrayList<Player> numberofPlayersArray;
numberofPlayersArray = new ArrayList<Player>();
//n is a variable for the number of Player class objects that I want to create
for(int i = 0; i < n; i++)
{
//this is what I can come up with but I am missing something
Player p;
p = new Player
numberofPlayersArray.add(p);
}
Cualquier ayuda sería apreciada
Solución
//Player is a custom class
ArrayList<Player> numberofPlayersArray = new ArrayList<Player>(n);
//n is a variable for the number of Player class objects that I want to create
for(int i = 0; i < n; i++) {
//this is what I can come up with but I am missing something
Player p = new Player();
numberofPlayersArray.add(p);
}
Tenga en cuenta que es mejor inicializar ArrayList
con el tamaño, si se conoce (como en su caso)
Otros consejos
Su código parece sintácticamente correcto con una excepción.
Cambiar
p = new Player
a
p = new Player();
Supongo que la variable n
se declara e inicializa y la clase Player
se define con un constructor sin argumentos.
No veo un problema aquí, solo hazlo
p = new Player();
(pero esto podría haber sido un error tipográfico) y la lista de jugadores se completará con n objetos de jugador diferentes.
Tenga en cuenta que solo estoy asumiendo que desea utilizar el constructor predeterminado para Player.
Sugerencia de nomenclatura: no debe nombrar una Lista '..Array', a menos que quiera confundirse;) Solo nómbrela '..Lista'
No olvides codificar en la interfaz (en lugar de la clase concreta).
List<Player> numberofPlayers = new ArrayList<Player>(n);
Olvidar hacer esto (o no saberlo) es un error común de principiantes.
Si decide cambiar a una implementación de lista alternativa más adelante (LinkedList o tal vez una Colección de Google o una lista de la Colección Apache Commons) no tendrá que cambiar todas las referencias a la lista, solo la asignación inicial.