![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Как в TreeSet хранить два(или более) элемента?
Например: имя и фамилию. Плюс может быть дату рождения. Нужно именно в TreeSet. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Создай объект:
-------------------- 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. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
LSD - спасибо. Кое-что понятнее стало.. А теперь дальше вопрос о создании органайзера
![]() Мне нужно с помощью Treeset и "Comparable"-интерфейса создать два класса: Termin и Terminplan. Terminplan может включать в себя сколько-угодно заметок, т.е. терминов(термин=заметка=время встречи, обеда или еще чего-либо). Это нужно для создания чего-то типа органайзера ![]()
Объект Termin как-то должен храниться в объекте Terminplan. Есть предложения? Добавлено @ 23:53 Вероятно, чтобы хранить start_time и end_time нужно использовать java.util.Date. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Т.е. как я понял Terminplan являет собой коллекцию объектов. Можно или просто взять одну из готовых и унаследовать от нее, или написать свой класс а в нем уже использовать коллекцию для хранения. Все зависит от того что надо от Terminplan. Понятно что там будет поиск, но какой поик конкретного объекта или по отдельным полям? Требуется ли уникальность Termin в пределах одного Terminplan? Еще что от него требуется?
-------------------- 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. |
|||
|
||||
Wowa |
|
||||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Одна встреча(термин) не может пересекаться с другой по времени. Если при добавлении новой встречи в ежедневник(органайзер) там уже есть запись с таким же временем, то нужно Exception выдавать...
В дальнейшем нужно класс Termin сделать абстрактным. И с помощью его создать еще два класса(один для праздников, а второй для назначенных встречь, переговоров и т.п.). Для праздничных дней(чтобы их туда заносить). Праздничные дни не имеют времени, а только дату ведь. И они не должны быть помехой для того, чтобы в этот день что-либо другое делать. Например, с кем-то поужинать вечером. Т.е. я так думаю, что праздничные дни должны отдельно храниться, в отдельном объекте, который унаследывает объект Termin. Правильно? Добавлено @ 00:03
Я плохо понимаю, что такое коллекция объектов. Ну, вероятно конечно унаследует, т.к. в нем будут храниться объекты Termin. Это и является коллекцией? Добавлено @ 00:11
В принципе, по полям поиск... А как иначе искать объект можно? Только Итератором перебирать? |
||||
|
|||||
LSD |
|
||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да, коллекция это просто некия набор объектов.
На мой взгляд да. Что-то типа такого:
Два HolidayTermin считаются одинаковыми если они выпадают на один день, а два MeetengTermin одинаковые если у них пересекаются время начало и время конца. Два одинаковых Termin в Terminplan не добавишь.
Вопрос в скорости. Если скорость не критична то можно и итератором, а если нужно искать быстро то можно и ускорить его с помощью эдаких "индексов" в виде 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. |
||||||||
|
|||||||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
LSD спасибо! А как можно HashSet заменить на TreeSet тут?
|
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
А вот моя функция main.
Как осуществить ввод новой встречи(термина) с клавиатуры? Нам нужно запросить "название" и "дату с временем". Стоит ли для каждого ввида ввода(ввод для занесения в базу, ввод названия для удаления из базы..) делать отдельный класс? В каком формате я получу массив от plan.getAll(); ? Как мне его распечатать? |
|||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Для использования TreeSet, надо чтобы Termin реализовывал интерфейс Comparable или написать свой Comparator. А чем вызвано требование использовать именно TreeSet?
Консоль, ГУИ?
Нет. Лучше сделать унифицированный класс который может использоваться для все типов ввода (все равно там код на 90% будет один и тот же), и просто указывать у него тип интерфейса (для добавления, удаления или изменения). -------------------- 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. |
||||||
|
|||||||
Wowa |
|
||||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
консоль Добавлено @ 12:11
Постановкой задачи ![]() А для нее больше подходит HashSet? |
||||
|
|||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Обычно HashSet лучше подходит для этих целей. У TreeSet преимущество состоит в том что: он отсортирован и время доступа гарантировано не превышает некую константу независимо от входных данных (у HashSet при неудачном рапределении hash кодов, время доступа может быть очень большим, но при правильном распределении он быстрее). Зато TreeSet требует больше времени на вставку/удаление элементов, из-за необходимости балансировки дерева. Ввод одного поля можно осуществить так:
P.S. На выходных могу накидать более подробный примерчик с Terminplan-ми, если надо. -------------------- 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. |
||||
|
|||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
LSD а как добавить введенные данные в наш план?
Так ведь нельзя? plan.add(date, str); |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Я немного модифицировал предыдущий примерчик
Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() -------------------- 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. |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
LSD Спасибо!
А есть идеи, как можно сохранить эти все встречи как-то в файл, а потом при след. запуске программы загрузить из файла? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Простейший способ сериализовать. Что то наподобие этого (на HashMap не обращай внимание, это я для друга делал демонстрашку):
Только надо будет сделать все объекты сериализуемыми (implements Serializable). Добавлено @ 13:28 В принипе можно и CSV засунуть и в XML. Это посложнее, зато возможно будет и из других приложений работать с этими данными. Будет интерестно расскажу как. -------------------- 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. |