![]() |
Работа с коллекциями
Здравствуйте!
Помогите решить задачу. Есть множество объектов типа ArrayCollection, со своей структурой. Для ускорения работы с данными, я хочу структуировать представление ArrayCollection в соответствии со своими задачами. Для этого я формирую списки индексов элементов ArrayCollection с помощью метода getItemIndex(). Но вот незадача: после сортировки ArrayCollection элементы меняют свой индекс. Подскажите, как можно проиндексировать объект ArrayCollection, чтобы потом по индексу элемента можно было обратиться к последнему, не взирая на операции вставки, сортировки, удаления. |
Ох вы написали. Может параллельно набивать/удалять эти элементы в хеш-таблицу?
|
Цитата:
- GBee, Вы Flash-разработчик? Это же не наш метод! :) |
Почему, просто будет две ссылки на один и тот же объект. Синхронизация - работы на 10 минут. Я за быстродействие :о)
Добавлено через 2 минуты У себя постоянно использую массив+таблица. Массив для массовых операций, таблица - быстро вытащить нужный элемент. |
GBee, поправьте меня, если я ошибаюсь:
Код AS3:
Возможно я чего-то недопонимаю в механизме присвоения ссылок в AS. |
Цитата:
|
Код AS3:
...Хм. Разобрался - Код AS3:
Есть такая возможность в Flex-framework? |
Цитата:
|
Есть множество ArrayCollection соответствующих таблицам серверной БД.
Всё это множество нужно систематизировать на стороне клиента и свести в один ArrayCollection. В этом конечном ArrayCollection должны быть значения идентифицирующие исходные итемы множества ArrayCollection (теперь я так понимаю ссылки на эти итемы), по которым можно быстро обратиться к исходным данным. Механизм наподобие реляционных БД: есть идентификатор поля, по нему получаем доступ к строке таблицы. Или механизм хеш-таблицы. Цель - ускорить работу с данными учитывая переменные условия. Кажется, Вы помогли мне в формировании понимания путей реализации: необходимо создать коллекцию ссылок на исходные элементы. Но остаётся иллюзия, что можно как-то пометить элементы исходных коллекций, чтобы потом обратиться к ним по этим меткам. Такой путь более приятен для моих стереотипов. |
Цитата:
|
Что-то мне кажется, что все это отдает то ли заумностью, то ли бредом.
Что мешает отдать с сервера коллекции с идентефикаторами? А на клиенте сортировать с помощью Sort и вытаскивать объект по идентефикатору? Если таки это сложно - "множество ArrayCollection соответствующих таблицам серверной БД", то все равно отдавать с сервера коллекцию DTO, в которую уже будут всунуты данные с разных таблиц и назначены идентефикаторы для предоставления уникального доступа. Мудрить с двумя структурами на клиенте - на кой? Кроме этого - коллекция с сервера отдается в зависимости от построения списка на сервере (допустим, ArrayList и LinkedList дадут/могут дать разный порядок), однако при формировании объекта ArrayCollection в его свойстве source типа Array порядок вложенных объектов будет постоянен вне зависимости от показываемой сортировки. По крайней мере, это может избавить от создания параллельной структуры для коллекции. |
Цитата:
Среда разработки - Flex-AMFPHP-MySQL. Добавлено через 23 минуты Цитата:
Можно, также, пример кода? Сама по себе идея, на мой взгляд, интересная. |
Цитата:
Добавлено через 3 минуты Очень здравая идея с построением общей мапы есть в HierarchicalCollectionView.Регулярно проходить про древовидной структуре и вправду дорого - цикл в цикле. Там как раз и строится мапа как хелпер. Правда лишь для открытых нод, что на практике несет в себе мало пользы. |
saprahan, это шутка в ответ на предложение дорабатывать исходные объекты.
Поделитесь мнением. Предположим есть экземпляр пользовательского класса MappedArrayCollection расширяющий ArrayCollection. Экземпляр слушает событие "collectionChange". По этому событию MappedArrayCollection циклом for each перебирает все элементы массива source и присваивает им идентификаторы. MappedArrayCollection имеет публичный метод отдающий элемент source по внешнему запросу с параметром идентификатора. В source 30000 элементов. Для каждого элемента в MappedArrayCollection задаётся 10 переменных со значением ключа-идентификатора. Насколько быстрым будет этот класс? Не повесит-ли он приложение? Не проще-ли создать отдельную хеш-таблицу со ссылками на элементы ArrayCollection.source? |
Цитата:
BTW экстендить нативные FLEX компоненты при более-менее сложной разработке приходится регулярно. Не стоит этого пугаться. |
saprahan, представьте, на станции авто-техобслуживания механик говорит Вам:
- Ща доработаем вашу колымагу! :) Вот набросал. Что скажите?: Код AS3:
|
| Часовой пояс GMT +4, время: 08:28. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.