Java for цикл для создания n-го количества объектов
Вопрос
Мне нужна кое-какая помощь.Я хочу создать цикл for, который создает n количество объектов класса, а затем добавляет их в arraylist.Что - то вроде этого:
//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);
}
Будем признательны за любую помощь
Решение
//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);
}
Обратите внимание, что лучше инициализировать ArrayList
размером, если он известен (как в вашем случае)
Другие советы
Ваш код выглядит синтаксически корректным, за одним исключением.
Изменение
p = new Player
Для
p = new Player();
Я предполагаю, что переменная n
объявляется и инициализируется, и Player
класс определяется с помощью конструктора без аргументов.
Я не вижу здесь проблемы, просто сделайте
p = new Player();
(но это может быть просто опечатка), и список игроков будет заполнен n различными объектами Player.
Обратите внимание, что я просто предполагаю, что вы хотите использовать конструктор по умолчанию для Player.
Подсказка по именованию: вам не следует называть список «..Array», если только вы не хотите запутаться;) Просто назовите его «..List»
Не забывайте кодировать интерфейс (а не конкретный класс).
List<Player> numberofPlayers = new ArrayList<Player>(n);
Забыть об этом (или не знать об этом) - распространенная ошибка начинающих.
Если вы решите переключиться на альтернативную реализацию списка позже (LinkedList или, возможно, коллекцию Google или список Apache Commons Collection), вам не нужно будет изменять каждую ссылку на список - только первоначальное распределение.