Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура хранения данных "дерево", есть ли? эффективное дерево объектов 
:(
    Опции темы
Maksym
  Дата 15.9.2005, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Организую ряд объектов в виде дерева, инкапсулируя функциональность дерева в своем классе.
От чего бы унаследовать, чтобы главные функции дерева были уже реализованы? smile

В java.util реазизованы некие TreeMap и TreeSet, но это что-то другое, возможностей дерева я у них не обнаружил (напр. получить потомков, предков, обход дерева)

Заранее спасибо smile

PM MAIL   Вверх
batigoal
Дата 15.9.2005, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Наверняка есть сторонние библиотеки с этими функциями. Надо поискать.

А какая именно функциональность нужна? И в чем заключается задача? (Просто, может, есть другой путь)


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
AntonSaburov
Дата 15.9.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Надо посмотреть DOM - там же как раз все это есть. И сразу если что можно XML получить.
PM MAIL WWW ICQ   Вверх
3,14
Дата 15.9.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 6
Всего: 24



А можно XSD схему дерева набросать, воспользоваться JAXB, и получить библиотеку для работы с деревьями подходящими под данное описание, но всё, конечно, зависит от задачи


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
LSD
Дата 15.9.2005, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
Maksym
Дата 15.9.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



AntonSaburov
что есть DOM? сори за непонятливость

Lamer George
не знаю где искать
Задача с виду проста.
Есть объект, назовем его TreeNode. Со своими полями и методами доступа к ним. Совокупность этих объектов по логике вещей представляет собой дерево произвольной глубины вложенности и количества потомков каждого из узлов.
Нужен грамотный объект Tree, в который можно было бы удобно добавить узлы произвольным образом, а потом это дерево обойти и распечатать (по принципу дерева каталогов) хотя бы имена всех узлов с отображением глубины вложенности...
Хотелось бы простыми методами это дерево редактировать, менять порядок узлов и т.п.
Зная мощь Java в подобных вопросах - просто поражен тем, что на поверхности ни одного готового решения. Ну чем, скажите, стек, очередь, вектор, свойства и другие реализованные в sdk структуры лучше дерева? или нужнее?
Писать, конечно, дерево можно, не вопрос.. со всеми рекурсивными штуками, которые там напрашиваются. Но думаю что его уже тысячу раз писали до меня smile
Если в sdk нет (что, повторюсь, странно), может быть кто-нибудь знает ссылку где есть? smile)


PM MAIL   Вверх
Stampede
Дата 15.9.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Maksym, для твоих целей вполне может сгодиться TreeNode, который является ключевым понятием в модели данных TreeModel для визуального компонента JTree.

Сам по себе TreeNode - это интерфейс. К нему есть раширенный интерфейс, MutableTreeNode, который дополнительно предусматривает возможность добавления, удаления и модификации узлов.

Класс, который реализует этот интерфейс, называется DefaultMutableTreeNode. Это вполне функциональный класс: он знает про свою глубину, путь от корня, родителя, прямых и дальних потомков и пр., и в том числе может делать обход. Если этого недостаточно, его функциональность можно легко расширить в собственном производном классе.

Примеры работы с "деревянными" структурами можно найти в туториале Sun How To Use Trees.

Надеюсь, это поможет. Удачи smile



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
batigoal
Дата 15.9.2005, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Попробуй посмотреть здесь:
http://www.theparticle.com/javadata2.html


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Maksym
Дата 19.9.2005, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Stampede
Lamer George
Как и предполагалось - готовые (почти готовые) решения уже есть. Спасибо smile DefaultMutableTreeNode все решает
PM MAIL   Вверх
Wowa
Дата 8.12.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



PM WWW   Вверх
Wowa
Дата 8.12.2005, 21:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 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 , в том же порядке

PM WWW   Вверх
Stampede
Дата 8.12.2005, 22:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Wowa, человек немного про другое спрашивал. TreeSet - это просто реализация упорядоченного множества (интерфейс SortedSet) то есть такого, в котором можно хранить объекты с возможностью быстрого поиска по (сравнительному) значению поля, для которого задан компаратор данного множества.

К возможностям работы с деревьями TreeSet никакого отношения не имеет. Тем более что товарищу ответили почти три месяца назад, и он ушел довольный.

Это я к тому, что не надо сбивать с толку новичков, которые могут заглянуть в этот топик.

PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.