![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
проблема: программа на Java.. дерево состоит из объектов разных классов..
надо обрабатывать узлы не от корня вниз, а в сложном порядке, например сначала узлы 3-го уровня, потом второго, потом предпоследнего и т.д. вопрос: как это лучше реализовать? мои идеи преобразовать дерево в другую структуру, в которой объекты будут в нужном порядке ---> в какую? пробегать дерево несколько раз использовать несколько классов Visitor использовать паттерн Builder ----> не знаю как |
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
в документации такого класса нет нашла.. спасибо! сейчас посмотрю Это сообщение отредактировал(а) ElKa - 16.7.2008, 19:51 |
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
PriorityQueue не подходит.. надо что нибудь посложнее.. типа паттерна Строитель
|
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
По-моему, придётся написать свой класс, в котором синхронно хранилось бы и дерево и Vector<Set<Item>>.
|
|||
|
||||
ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
Dims,
а Vector зачем? ![]() |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
||||
|
||||
Shurr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 5 Всего: 7 |
В данном случае вектор играет роль индекса. Т.е. он не хранит никакой уникальной информации, все то же самое можно узнать, пробежавшись по дереву. Но использование такого индекса позволяет получить эту информацию (в данном случае - список узлов на определенном уровне) гораздо быстрее. Судя по описанию из первого сообщения - для подобной обработки придется хранить по вектору (кстати, при однопоточной обработке подойдет и List) на каждый уровень дерева. Подобные вещи подходят в случае, если дерево редко редактируется, а поиск по нему производится часто, при этом скорость обработки критична. В других случаях накладные расходы на организацию и поддержание в актуальном состоянии такого индекса могут не оправдаться полученными выгодами. Тогда возможно стоит организовать доступ через обычный Walker. При этом для удобства его интерфейс можно сделать похожим на интерфейс списка (так, например, под интерфейс org.w3c.dom.NodeList обычно подкладывается имплементация в виде walker'a). |
|||
|
||||
ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
дерево будет использоваться один раз для генерации кода
никаких поисков по нему не будет ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |