Вот суть, по сути г.г.избежать добавления дублирующих объектов к ArrayList
ответ
Ваш метод, вероятно неудачу, потому что, хотя строки не равны, это вовсе не означает, что teams
или games
список не уже есть эти строки. Вам нужно зациклиться на списке игр и проверить, соответствует ли имя team1
или team2
, если это так, верните false.
Хорошо, что вы сравниваете данные команды, которые не совпадают, и вы можете использовать свои параметры для сравнения, но это не единственное условие, в котором вы нуждаетесь.
if(!team1.equals(team2)) {
Кроме того, тот факт, у вас есть new String
на значениях, которые уже строки создает новый объект в памяти, поэтому (это бессмысленно), но метод равно должен работать.
Следует также отметить, что это защита от идентичных спариваний – yarcenahs
Право. И это нормально, вы просто не проверяли, есть ли 'games'или' команды' уже команда 'team1' или' team2' –
«Строки хранятся в игровом объекте, поэтому я не могу иметь два одинаковых объекты, хранящиеся в ArrayList когда-либо» (Ваш комментарий.)
Похоже, что в обмен на больше памяти может использовать Set
(HashSet
или TreeSet
), чтобы сохранить записи предыдущих игр. Если вы защищаете идентичные пары, а не идентичные имена команд (в любой момент), соберите два имени команды String
и объедините их в ключ. Проверьте, существует ли этот ключ в наборе.
EDIT: См. Другое решение для ArrayList
.
Ах, забыл одно, чтобы упомянуть, другое ограничение - я могу использовать только классы ArrayList, Math и String , – yarcenahs
@yarcenahs * snap * ах, вот так я и сделал бы это. :) Я думаю, это может быть для личного «дополнительного кредита». – synchronizer
Разве вы не можете хранить одни и те же две строки * когда-либо *, или вы не можете хранить одну и ту же две строки подряд? – synchronizer
Невозможно сохранить одну и ту же две строки – yarcenahs
Строки хранятся в игровом объекте, поэтому у меня не может быть двух одинаковых объектов, хранящихся в ArrayList, когда-либо – yarcenahs