![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
solve |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Преамбула:
Есть класс OutputSymbol c перегруженными методами equals , hashcode Есть список,елементами которого есть массивы объектов класса OutputSymbol
Цель- проверить,будет ли данный массив содержаться в списке. Проблема: Если создать массив,занести его в список,а потом создать еще один массив с такими же елементами и проверить,если ли он в списке с помощью contains,то результат будет false Например
результат будет false, что вполне понятно,потому как в методе containes используется equals, которые для массивов даст false. Как я понимаю, применение Arrays.equals даст нужный результат:
Даст true Вопрос: Как сделать корректную проверку на вхождение для списка с елементами-массивами? Как я понимаю,можно наследовать новый класс от ArrayList и переопределить contains и indexOf, но есть ли альтернативные решения. Заранее спасибо |
||||||
|
|||||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Есть. Например, можно сделать хелпер, который и будет производить проверку. Пример:
Добавлено через 2 минуты и 17 секунд Но лично я бы вместо этого сделал для OutputSymbol[] свой класс-обёртку, у которого определил бы equals. Имхо, нехорошо в листе хранить "голые" массивы. Но аргументировать свою позицию не могу, а потому и не настаиваю. ![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Если есть возможность заменить List на Set, то можно использовать TreeSet со своим компаратором.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
solve |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Попробовал оба варианта
![]() Вариант с классом- хелпером - именно то что нужно.
Спасибо за совет. По поводу замены List на Set: Не уверен,что использование компаратора повлияет на contains в множестве: Написал такой вот класс
Проверил его на имеющихся массивах:
Получил 0. то есть вроде как равны(так оно и есть на самом деле). Теперь задаем множество c компаратором:
Дает false То есть даже если компаратор считает елементы равными, в TreeSet.containes все равно считает их разными Или я что-то не так делаю? |
||||||||
|
|||||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
У тебя отношение задаваемое компаратором не транзитивно (если a > b и b > c, то a > c, а у тебя это не так). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |