Ответ от LppEdd , предлагающий computeIfAbsent
, верен, но, возможно, не то, что ищет ваш преподаватель курса.Вероятно, он / она хочет, чтобы вы использовали больше кодирования, чем мы это делали в реальной работе до того, как этот новый метод был добавлен недавно.
Старомодный метод addTeam(String division, Team team)
, который нужно добавить в LeagueAdmin
спросит карту, есть ли у нее ключ для строки деления.Если такого ключа нет, добавьте его и укажите в качестве его значения новый пустой List
команд, в которые вы добавили соответствующую команду.Если такой ключ существует, извлеките его значение a List
, а затем добавьте соответствующую команду в этот список.
В качестве домашнего задания, для обучения вам нужно немного с этим бороться, а не копировать какой-либо существующий код. Изучите JavaDoc для интерфейсов Map
и List
.Следуйте моей прозе выше как псевдокод, чтобы провести вас по логике.Убедитесь, что вы понимаете идеи, стоящие за каждым классом, особенно пара ключ-значение карты (также известная как словарь или ассоциативный массив ).Нарисуйте диаграмму на бумаге, представляя каждый шаг, который я обрисовал выше.
Таким образом, объект лиги содержит объект Map
.Карта содержит набор ключей, каждый из которых является именем подразделения (String
в вашей ситуации, более вероятно, класс Division
в реальной работе).Быть ключом на карте означает, что каждое имя подразделения приведет вас к объекту List
, совокупности команд.List
хранит элементы в том порядке, в котором они были добавлены.Кстати, Set
хотел бы работать и здесь.
Обратите внимание, что на этой диаграмме один из объектов List
пуст, то есть ему еще не назначены команды.Пустой список не ничто;пустой список это что-то.Пустой список по-прежнему является действительным объектом, точно так же, как корзина с фруктами, в которой нет фруктов, по-прежнему является корзиной.Если никакому списку, пустому или нет, еще не назначен ключ на карте, он указывает на null
, где null
действительно означает «вообще ничего».На этой диаграмме мы видим, что клавише «Division-Z» на карте еще не был назначен какой-либо объект List
, поэтому он ничего не указывает, null
.