2016-03-03 2 views
-2

Я пытаюсь разработать TS3 Bot в Java с помощью этого API: https://github.com/TheHolyWaffle/TeamSpeak-3-Java-APIlist.contains не работает

У меня есть список всех групп серверов, что клиент имеет:

List<ServerGroup> playerGroups = TS3Bot.api.getServerGroupsByClientId(player.clientdbID); 

И теперь Я проверяю, есть ли Список: Группа:

if(!playerGroups.contains(TS3Bot.botGroups.get(1))){...} 

И результат неверен. Я на 100% уверен, что этот Список содержит ServerGroup.

Уже проверено с помощью Sysouts.

Вот ссылка на ServerGroup Класс: https://github.com/TheHolyWaffle/TeamSpeak-3-Java-API/blob/master/src/main/java/com/github/theholywaffle/teamspeak3/api/wrapper/ServerGroup.java

и это только ServerGroup Object.toString().

{iconid=0, savedb=1, sortid=0, name=Test 2, n_member_removep=100, sgid=98, type=1, n_member_addp=100, namemode=0, n_modifyp=100} 
+8

У вас есть лишние равные и хэш-коды в ServerGroup? –

+0

'list.contains()' действительно работает. Пожалуйста, ответьте на комментарий @ Jean-FrançoisSavard. Должно быть что-то, что вы сделали, чтобы отключить нормальную работу метода 'contains()'. –

+0

Вам необходимо показать соответствующие разделы ServerGroup. – Raedwald

ответ

2

Не забудьте уважать Object#equals(Object o) контракт

указывает на какой-либо другой объект, является ли «равно» это один. Равно метод реализует отношение эквивалентности на ненулевой объект ссылки:

Это рефлексивный: для любого ненулевого опорного значения х, x.equals (х) должна возвращать верно.

Это симметрично: для любых ненулевых значений значения x и y, x.equals (y) должны возвращать true, если и только , если y.equals (x) возвращает true.

Это является переходным: для любых ненулевых значений ссылок х, у и г, если x.equals (у) возвращает истину и y.equals (г) возвращает истину, то x.equals (г) должен вернуть true.

Это соответствует: для любых ненулевых значений ссылок х и у, несколько призываний x.equals (у) последовательно возвращает истину или последовательно возвращают ложные, не представили никакой информации, используемой в равных сравнения на объектов является модифицирована.

Для любого ненулевого опорного значения х, x.equals (NULL) должен возвращать ложь. Метод equals для класса Object реализует наиболее различающееся возможное отношение эквивалентности на объектах ; то есть для любых ненулевых опорных значений x и y этот метод возвращает true тогда и только тогда, когда x и y относятся к одному и тому же объекту (x == y имеет значение true).

Следует отметить, что в общем случае необходимо переопределить метод HashCode всякий раз, когда этот метод переопределяется, таким образом, чтобы поддерживать общий контракт для метода HashCode, который гласит, что равные объекты должны иметь равные хэш-коды.

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