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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создать дерево из set 
V
    Опции темы
Samotnik
Дата 23.11.2010, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



привет. Сразу скажу, что java.util.TreeSet<E> тут не причем smile 
Стоит задача, сформировать дерево такого вида : 
user posted image
Чтобы потом можно было проходить по узлам, в виде такого алгоритма : Первый узел, у тебя есть дочерний Sport, Sport у тебя есть men ?

Может есть какие-нибудь примеры такого дерева на Java  smile 
PM MAIL   Вверх
Skipy
Дата 23.11.2010, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

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



А в чем проблема? 


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 23.11.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Skipy @  23.11.2010,  12:13 Найти цитируемый пост)
А в чем проблема?  

как это сделать ? smile
PM MAIL   Вверх
Samotnik
Дата 23.11.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



ну народ, ведь наверняка кто-то деревья на java писал smile  smile 
PM MAIL   Вверх
Temdegon
Дата 23.11.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Цитата

А в чем проблема?  

+1
Ну сделать класс TreeElement с полями 
TreeElement parent
List<TreeElement>children
ну и методы hasChild(TreeElement)
addChild(TreeElement)
etc
или проблема в чем-то другом?
Или проблема заполнить такое дерево из коллекции?

Это сообщение отредактировал(а) Temdegon - 23.11.2010, 22:30
PM MAIL   Вверх
Samotnik
Дата 23.11.2010, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Temdegon, спасибо, а как мне это применить к той "диаграмме" что я в первом посту привел ? 
PM MAIL   Вверх
Temdegon
Дата 23.11.2010, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Объясни плиз подробно, что тебе надо сделать. Ну ведь явно не нарисовать такую милую картиночку из первого поста? Тебе надо заполнить модель какого-то дерева какими-то данными? или тебе надо эту самую модель дерева сначала сделать? Из каких даных тебе надо сделать древовидную структуру?

Добавлено через 14 минут и 24 секунды
Заполнить дерево проще всего рекурсивной функцией. Примерно так:
Код

RootNode = getRootNode(); // нашли корневой элемент
fillChildren(RootNode); //вызвали метод, заполняющий его дочерними элементами

void fillChildren(Node node) {
 List<Node> nodesList = getNodesByParent(node); // находишь все дочерние элементы
 for (Node current : nodesList) { 
  node.addChild(current); // добавляешь каждый элемент в текущий
  fillChildren(current); // заполняешь дочерними элементами каждый элемент
 }
}


Надеюсь, смысл понятен
PM MAIL   Вверх
Samotnik
Дата 24.11.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Temdegon @  23.11.2010,  22:36 Найти цитируемый пост)
Объясни плиз подробно, что тебе надо сделать.

мне будет приходить xml, в котором выстроена уже готовая модель отношений родителей и детей. Пример :
Код

<?xml version="1.0"?>
<categories>
    <category name="sport">
        <category name="women">
            <category name="tennis"/>
        </category>
        <category name="men">
            <category name="boys">
                <category name="football"/>
            </category>
        </category>
    </category>
    <category name="art">
        <category name="films"/>
        <category name="books"/>
        <category name="music"/>
    </category>
</categories>

Мне необходимо распарсить этот xml и сделать из него дерево (с точно такими же связями) на Java. Т.е. дерево должно состоять просто из String значений. 
PM MAIL   Вверх
Temdegon
Дата 24.11.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Какими средствами распарсить xml я не подскажу, т.к. почти не приходилось с ним работаь. Но думаю сложного ничего в этом нет.
Возьми готовую реализацюи элемента дерева 
http://download.oracle.com/javase/1.4.2/do...leTreeNode.html
или напиши свою.
Ну а дальше какие проблемы? Создай корневой элемент и рекурсивно вглубь добавляй дочерние элементы.
PM MAIL   Вверх
Samotnik
Дата 24.11.2010, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Temdegon, распарсить xml я могу, я про это и не спрашиваю smile
я про то, как хранить и в чем. smile 
PM MAIL   Вверх
Temdegon
Дата 24.11.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Ну прям стригни связать деревцем неполучится никак. Полюбому нужно их заворачивать в класс, который будет содержать ссылки на вложенные элементы. 
или юзай 
http://download.oracle.com/javase/1.4.2/do...leTreeNode.html
или как я уже писал
Цитата

Ну сделать класс TreeElement с полями 
TreeElement parent
List<TreeElement>children
ну и методы hasChild(TreeElement)
addChild(TreeElement)
etc

только, естественно, в этом классе должно быть поле для хранения твоего стринга.
Чего тебе не хвататет? Сохранения такой структуры? 
PM MAIL   Вверх
Samotnik
Дата 24.11.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Temdegon, хорошо, спасибо, понял. 
А что если мне нужно будет помечать каждый элемент моего дерева, к чему он относится, то это как сделать ? 
Например, sport - отнести к sport, его дочерний элемент women отнести тоже к sport, и в свою очередь дочерний элемент tenis отнести к games
PM MAIL   Вверх
Temdegon
Дата 24.11.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



Если я правильно понял вопрос, добавь в свой TreeElement дополнительное поле - category и выставляй его. Типа Enum какой-нить или какого-нить своего класса.
Кстати, такая древовидная структура прекрасно мапится хибернейтом и каскадно загружается. тянешь из базы корневой элемент, и хибер сам загрузит всю сруктуру.
PM MAIL   Вверх
Samotnik
Дата 24.11.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Temdegon @  24.11.2010,  15:42 Найти цитируемый пост)
Если я правильно понял вопрос, добавь в свой TreeElement дополнительное поле - category и выставляй его.

а просто 
Код

String category;

нельзя ?
PM MAIL   Вверх
Temdegon
Дата 24.11.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.10.2008
Где: Minsk

Репутация: 7
Всего: 9



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

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

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


 




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


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

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