Java for loop pour créer n quantité d'objet
Question
J'ai besoin d'aide. Je veux créer une boucle for qui crée un nombre n d'objets d'une classe, puis les ajoute à un arraylist. Quelque chose comme ça:
//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);
}
Toute aide serait appréciée
La solution
//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);
}
Notez qu'il est préférable d'initialiser ArrayList
avec la taille, si elle est connue (comme dans votre cas)
Autres conseils
Votre code est syntaxiquement correct à une exception près.
Changer
p = new Player
à
p = new Player();
Je suppose que la variable n
est déclarée et initialisée et que la classe Player
est définie avec un constructeur sans arglises.
Je ne vois pas de problème ici, il suffit de faire
p = new Player();
(mais cela aurait pu être une faute de frappe) et la liste des joueurs sera peuplée de n objets Player différents.
Notez que je suppose simplement que vous souhaitez utiliser le constructeur par défaut pour Player.
Conseil de nommage: vous ne devriez pas nommer une liste '..Array', sauf si vous voulez vous embrouiller;) Nommez-le simplement '..List'
N'oubliez pas de coder pour l'interface (plutôt que pour la classe concrète).
List<Player> numberofPlayers = new ArrayList<Player>(n);
Oublier de faire cela (ou ne pas savoir à ce sujet) est une erreur courante chez les débutants.
Si vous décidez de passer ultérieurement à une autre implémentation de liste (LinkedList ou peut-être une liste de collections Google Collection ou Apache Commons Collection), vous ne devrez pas modifier chaque référence de la liste, mais uniquement l'allocation initiale.