В моей футбольной команде 5 разных команд, и я пытаюсь создать программу, которая отслеживает, какие игроки зарегистрированы в каждой команде. Я хочу добавить нового игрока, но сначала программа проверяет, зарегистрирован ли этот игрок. Я также смогу добавлять новые команды в будущем, и снова я хотел бы проверить, существует ли уже эта команда.
Я сделал переменную карты с
private Map<String, List<Player>> teamName;
затем инициализировал это в конструкторе
teamName = new HashMap<>();
Затем у меня есть метод добавления новых команд и новых игроков, я хочу, чтобы этот метод проверял, существует ли уже имя клуба, а затем, если оно существует, добавляю имя игрока в этот клуб. если он не существует, я хочу, чтобы программа добавила новый клуб, а затем добавила этого игрока в этот клуб.
Пока у меня есть метод добавления нового игрока,
public void newPlayer(String club, Player name) {
}
Я не уверен, как мне теперь проверить, существует ли ArrayList для club
, и если он действительно добавляет name
в этот список, если club
не существует, то я хочу создать новый список и добавить name
к нему.
если я потом запущу программу и напишу,
Player jamesAtkinson = new Player();
newPlayer("first team", jamesAtkinson);
он проверит, есть ли на карте список под названием «первая команда», а затем либо добавит в него Джеймса Атикинсона, либо создаст новый список под названием первая команда, а затем добавит Джеймса Аткинсона.
Это вообще возможно сделать?
Хотя есть несколько проблем с кодом, который вы указали в вопросе. То, что вам нужно, — это функция .containsKey
, которая недоступна в интерфейсе карты.
if (players.containsKey("first team") {
// Do something
} else {
List<Player> firstTeam = new ArrayList<>();
firstTeam.add(jamesAtikson);
players.put("first team", jamesAtikson);
}
Спасибо, Джей, все это имеет смысл, но если список уже существует, то как мы можем его добавить? т. е. если я создам команду с именем firstTeam и игроком JamesAtkinson, списка еще не будет, поэтому он будет создан, тогда я хочу добавить еще одного игрока в firstTeam. Я знаю, что мне нужно написать код в первой части оператора if
, в идеале я хочу, чтобы имя списка совпадало с именем, на которое ссылается String club
, чтобы затем я мог сделать что-то вроде club.add(name);
не уверен, возможно ли это, потому что, если я попробую, он говорит есть ошибка не могу найти метод `add(Player) Спасибо, Джеймс
@JoePasquale Затем вам нужно вызвать метод get
на карте, а затем вызвать add
в возвращаемом списке. Вы даже можете связать методы вместе
сначала изучите основы. Игрок Джеймс Аткинсон = новый игрок(); никогда не скомпилируется.