![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
natika |
|
||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Добрый день, уже несколько дней мучаюсь с Comparable, мне нужно вводимые значения с клавиатуры сравнить со значением которые находятся внутри объекта класса Film. например мне нужно найти фильм по названию я создала временный объект сохранила туда введеное название и сравниваю теперь его с названиями фильмов. Мой временный объект находится в классе Gestion. Вот главная функция через которую проходит поиск она находится тоже в классе Gestion:
а вот моя функция которая сравнивает правда она выдает ошибку но я не знаю почему и не знаю как вызвать эту функцию из функции findFilm(); пыталась вызвать напрямую Eclipse требует переделать ее в static если переделываю то Comparable ругается
Помогите пожалуйста разобраться Это сообщение отредактировал(а) natika - 28.3.2014, 16:36 |
||||
|
|||||
MarkHunt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.3.2013 Репутация: нет Всего: нет |
Чтобы Eclipse не ругался, нужно убрать из метода findFilm слово static. А вообще вы пытаетесь сделать сортировку коллекции.
Чтобы сделать поиск нужно пройтись циклом по коллекции объектов Film и сравнивать введённое значение с названием фильма. Примерно так:
|
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Код практически невозможно прочесть, он не отформатировал и не оформлен тегами [Код]
2. Если ты хочешь быстро искать по названию, категории и т.д., то тебе надо создать несколько сортированных массивов/коллекций по одной на каждое поле по которому надо искать. Вначале сортировать, а потом искать будет приблизительно в 2 раза долще, чем простой поиск перебором. 3. Ну и вообще хотелось бы услышать более детальное описание проблемы. -------------------- 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. |
|||
|
||||
natika |
|
||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Мне нужно именно Comparable использовать и я не знаю как с помощью Comparable сравнить объект со String введенным из клавиатуры когда функция compareTo возвращает только 1, 0 и -1, и если я вызываю эту функцию из функции findFilm() которая находится в другом классе то Eclipse просит сделать compareTo static а Comparable при этом ругается |
||||
|
|||||
MarkHunt |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.3.2013 Репутация: нет Всего: нет |
Если нужен именно Comparable, то класс, объекты которого сортируются, должен реализовывать этот интерфейс.
Пример:
Пример использования:
Это сообщение отредактировал(а) MarkHunt - 28.3.2014, 18:21 |
||||
|
|||||
natika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Спасибо!! А скажите пожалуйста int cmp = title.compareToIgnoreCase(other.title) первая title относится к desiredMovie?
|
|||
|
||||
natika |
|
||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Добрый день я немного поменяла Ваш код потому что мне нужно сравнить фильм либо по названию либо по реализатору либо по категории и вот что у меня получилось
но он у меня почему то не сортирует а выдает ошибку NullPointerException на строку int cmp = titre.compareToIgnoreCase(other.titre); |
||||
|
|||||
MarkHunt |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.3.2013 Репутация: нет Всего: нет |
скорее всего из-за того, что не все поля класса Films инициализированы. Так работает:
По поводу этого
LSD предлагал вариант но я честно говоря не догадываюсь как это сделать, т.к. compareTo только один раз реализуется, и в нём уже задано первое поле titre. А вот как сделать, чтобы по другим полям был поиск незнаю ![]() |
||||||
|
|||||||
natika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Спасибо Вам большое, я сделала как у Вас а он ошибку выдает вот эту
Exception in thread "main" java.lang.NullPointerException at Films.compareTo(Films.java:95) вот здесь int cmp = titre.compareToIgnoreCase(other.titre); at Films.compareTo(Films.java:1) это тут import java.util.ArrayList; at java.util.Collections.indexedBinarySearch(Unknown Source) at java.util.Collections.binarySearch(Unknown Source) |
|||
|
||||
MarkHunt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 7.3.2013 Репутация: нет Всего: нет |
приведите полный код этих классов
|
|||
|
||||
natika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 27.3.2014 Репутация: нет Всего: нет |
Спасибо Вам большое за помощь я решила без Comparable сравнить объекты потому что совсем времени уже нет, все равно он у меня не получается наверное потому что у меня там 12 классов и код очень большой. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |