2014-09-02 6 views
1

Скажите, что я даю игрокам создавать команды, и создание команды вызывает новый экземпляр командного класса, который имеет список массивов, называемый членами.Редактирование конкретного экземпляра объекта

Теперь, в основном классе, как добавить игрока в команду после приглашения? У меня есть метод addPlayer в командном классе, который просто добавляет их в arraylist, но что, если в настоящее время есть несколько экземпляров класса команд (другие игроки создали команды), как он узнает, к кому присоединиться?

У меня есть переменная в классе Teams для teamLeader, которая устанавливается при создании экземпляра, если это может помочь мне отредактировать определенный экземпляр.

Team team = new Team(this, leader); 

Любая помощь appreiciated

+3

Можете ли вы опубликовать исходный код из класса 'Team' и части, как вы это назвали? – reporter

ответ

1

Вам нужен идентификатор, чтобы однозначно различать каждую команду, и вы можете использовать этот идентификатор для хранения команд в Map. Что-то вроде этого:

Map<String,Team> teamMap = new HashMap<String,Team>(); 

Выберите тип ключа согласно вашему требованию, я выбрал строку для примера

+0

Да, я думал, что мне понадобится какой-то уникальный идентификатор для каждой команды, поэтому я подумал, что переменная teamLeader является идентификатором команды, я просто не знаю, как добавить команду на основе лидера команды, например. Добавьте игрока в уже сделанный экземпляр команды, где teamLeader = someplayer – user3439600

0

В соответствии с вашим дизайном, Вы должны держать все команды в списке после создания.

ArrayList teamsList=new ArrayList(); 
Team team = new Team(this, leader); 
teamsList.add(team); 

Затем пропустите все команды в методе addPlayer, а затем сравните лидера, а затем добавьте к нему игрока. Что-то вроде этого -

public void addPlayer (Player player,String leader){ 

for(int i=0; i<teamListSize;i++) 

    Team tempTeam=teamsList.get(i); 

    if(tempTeam.getLeader().equalsIgnoreCase(leader)){ 

     tempTeam.add(player); 
     break; 
    } 

} 
+0

Выглядит неплохо, я попробую это, я подумал о том, чтобы хранить все команды при создании и зацикливать их, но я не был уверен, что вы можете перебрать все текущие экземпляры объекта – user3439600

+0

Таким образом, массив teamsList не должен находиться в классе Team, но вы получаете доступ к нему из appPlayer, который находится в классе Team? Я создаю экземпляр внутри моего основного класса – user3439600

+0

Если вы создадите командыList как переменную экземпляра (вне основного), она доступна в addPlayer. –

Смежные вопросы