![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Организую ряд объектов в виде дерева, инкапсулируя функциональность дерева в своем классе.
От чего бы унаследовать, чтобы главные функции дерева были уже реализованы? В java.util реазизованы некие TreeMap и TreeSet, но это что-то другое, возможностей дерева я у них не обнаружил (напр. получить потомков, предков, обход дерева) Заранее спасибо |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Наверняка есть сторонние библиотеки с этими функциями. Надо поискать.
А какая именно функциональность нужна? И в чем заключается задача? (Просто, может, есть другой путь) -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Надо посмотреть DOM - там же как раз все это есть. И сразу если что можно XML получить.
|
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
А можно XSD схему дерева набросать, воспользоваться JAXB, и получить библиотеку для работы с деревьями подходящими под данное описание, но всё, конечно, зависит от задачи
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не думаю что DOM и JAXB подойдут т.к. они только представляют информацию в виде дерева.
А обход дерева, получение высоты дерева, балансировка и т.д. в них не реализованны и это опять реализовать руками. -------------------- 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. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
AntonSaburov
что есть DOM? сори за непонятливость Lamer George не знаю где искать Задача с виду проста. Есть объект, назовем его TreeNode. Со своими полями и методами доступа к ним. Совокупность этих объектов по логике вещей представляет собой дерево произвольной глубины вложенности и количества потомков каждого из узлов. Нужен грамотный объект Tree, в который можно было бы удобно добавить узлы произвольным образом, а потом это дерево обойти и распечатать (по принципу дерева каталогов) хотя бы имена всех узлов с отображением глубины вложенности... Хотелось бы простыми методами это дерево редактировать, менять порядок узлов и т.п. Зная мощь Java в подобных вопросах - просто поражен тем, что на поверхности ни одного готового решения. Ну чем, скажите, стек, очередь, вектор, свойства и другие реализованные в sdk структуры лучше дерева? или нужнее? Писать, конечно, дерево можно, не вопрос.. со всеми рекурсивными штуками, которые там напрашиваются. Но думаю что его уже тысячу раз писали до меня Если в sdk нет (что, повторюсь, странно), может быть кто-нибудь знает ссылку где есть? |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Maksym, для твоих целей вполне может сгодиться TreeNode, который является ключевым понятием в модели данных TreeModel для визуального компонента JTree.
Сам по себе TreeNode - это интерфейс. К нему есть раширенный интерфейс, MutableTreeNode, который дополнительно предусматривает возможность добавления, удаления и модификации узлов. Класс, который реализует этот интерфейс, называется DefaultMutableTreeNode. Это вполне функциональный класс: он знает про свою глубину, путь от корня, родителя, прямых и дальних потомков и пр., и в том числе может делать обход. Если этого недостаточно, его функциональность можно легко расширить в собственном производном классе. Примеры работы с "деревянными" структурами можно найти в туториале Sun How To Use Trees. Надеюсь, это поможет. Удачи -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Stampede
Lamer George Как и предполагалось - готовые (почти готовые) решения уже есть. Спасибо |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
TreeSet
http://java.sun.com/j2se/1.4.2/docs/api/ja...il/TreeSet.html и тут http://www.galileocomputing.de/openbook/ja...40003921F0371BC правда на немецком. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
http://computerbooks.ru/books/Programming/...va6/Index35.htm
Класс TreeSet полностью реализует интерфейс sortedset и итератор типа iterator . Класс TreeSet реализован как бинарное дерево поиска, значит, его элементы хранятся в упорядоченном виде. Это значительно ускоряет поиск нужного элемента. Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator . Этот класс удобен при поиске элемента во множестве, например, для проверки, обладает ли какой-либо элемент свойством, определяющим множество. В классе TreeSet четыре конструктора: TreeSet () — создает пустой объект с естественным порядком элементов; TreeSet (Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с; TreeSet (Collection coll) — создает объект, содержащий все элементы коллекции coll , с естественным порядком ее элементов; TreeSet (SortedMap sf) — создает объект, содержащий все элементы отображения sf , в том же порядке |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Wowa, человек немного про другое спрашивал. TreeSet - это просто реализация упорядоченного множества (интерфейс SortedSet) то есть такого, в котором можно хранить объекты с возможностью быстрого поиска по (сравнительному) значению поля, для которого задан компаратор данного множества.
К возможностям работы с деревьями TreeSet никакого отношения не имеет. Тем более что товарищу ответили почти три месяца назад, и он ушел довольный. Это я к тому, что не надо сбивать с толку новичков, которые могут заглянуть в этот топик. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |