Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Иерархическая структура. Опять. / 7 сообщений из 7, страница 1 из 1
08.07.2013, 21:44:36
    #38324817
Кореец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
Добрый вечер.

В Оракле есть потрясающая возможность работать с иерархическими структурами.

На таблице вида id,parent_id и индексов по ним в обе строны.

Запросы летают пулей. что для получения всех потомков, что для получения всех родительских записей. Достаточно поставить два индекса id+parent и parent+id.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select * 
from table 
start with id = ...
connect by prior id = parent

либо

connect by prior parent = id



Все просто красиво и быстро работает. С любой вложенностью потомков.

Как такое же реализовать через коллекции джава Map(key,value)?

Данных много.

Простая конструкция вида Map(id, parent_id )
может работать быстро только при получении родителей. Ибо запрос пойдет по ключу Map.

А вот если задаться целью найти всех потомков, то придется идти перебором по всем parent и сравнивать с id.


Неужели придется держать две коллекции фактически имитируя индексы как в оракле?
Или есть решение похитрее?
Или я вообще не ту структуру как основную рассматриваю?
...
Рейтинг: 0 / 0
09.07.2013, 10:31:37
    #38325095
Кореец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
Вообще в Java есть какой нибудь набор библиотек реализующий индексный доступ к данным?

Судя по стандартному набору Map/Set/List - там этого нет.

Самое близкое Map но и там если смотреть глазами разработчика БД есть только ПК в виде поля key.

Неужели ничего подобного не создавалось никогда? Ведь самый обычный индекс позволяет сократить количество шагов при поиске элемента коллекции во много раз.
...
Рейтинг: 0 / 0
09.07.2013, 10:40:05
    #38325108
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
Кореец,

А что-нибудь тиап такого не потянет?

Код: java
1.
2.
3.
4.
5.
6.
7.
// для поисков
Map<id, MyHierarchicalObj> 

// и класс иерархии
class MyHierarchicalObj
private MyObj parent
private Collection<MyObj> child
...
Рейтинг: 0 / 0
09.07.2013, 10:45:52
    #38325118
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
sanBez,

сорри, поспешил. наверно так:
Код: java
1.
2.
3.
4.
// и класс иерархии
class MyHierarchicalObj
private MyObj parent
private Collection<MyHierarchicalObj> child
...
Рейтинг: 0 / 0
09.07.2013, 10:49:46
    #38325123
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
Кореец,

Зачем вы привязываетесь к Java коллекциям? Определитесь какая-именно структура данных вам нужна. А затем уже ищите реализацию на Java.
http://ru.wikipedia.org/wiki/Дерево_(структура_данных)
...
Рейтинг: 0 / 0
09.07.2013, 10:57:33
    #38325137
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
Кореец,

Чтобы совсем уж по науке )
...
Рейтинг: 0 / 0
09.07.2013, 14:05:45
    #38325514
rfq
rfq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархическая структура. Опять.
КореецНеужели придется держать две коллекции фактически имитируя индексы как в оракле?
Или есть решение похитрее?


Сами же говорите - в Оракле все быстро и красиво, так почему бы не сымитировать? Или лень? Ну так гуглите java embedded key-value in-memory indexed database. Но ручное решение, привязанное к вашей структуре данных, всё равно будет быстрее работать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Иерархическая структура. Опять. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]