Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Общие вопросы о Unity3D

Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение _Disa_ 23 июн 2012, 09:52

За ранее извиняюсь в очепятке в названии топика.

Добрый день.

Чего-то полдня туплю и не могу понять, как правильно инициализировать и добавлять элементы в контейнер типа Dictionary< ket<T_1>, любой список<T_2>>

Чтоб добавить несуществующий, ясно что нужно Dictionary.Add(), но вот что передавать во второй параметр, если например у меня в цикле добавляется либо один, либо ноль элементов в очередь?
Если не совсем ясно чего я хочу - есть несколько уникальных очередей, количество за ранее неизвестно и нужно уметь к ним быстро обращаться (т.к. очередей не очень много 5-6ть, но внутри очереди мб уже до 1000 элементов).

Только если засовывать снова всю очередь целиком с 1им добавленным элементом или писать обертку для очереди в виде класса?
ArShift
_Disa_
UNIт
 
Сообщения: 97
Зарегистрирован: 07 мар 2012, 09:07
Откуда: Нерезиновая
Skype: islamov_denis
  • Сайт

Re: Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение Roland 23 июн 2012, 11:14

У вас очередь имеет тип List<>. Dictionary устроен по принципу <Key, Value>, т.е. добавляете ключ и List, только учтите, что могут быть проблемы с потокобезапастностью. Есть ещё класс ConcurentDictionary, он блокирует объект, пока добавляется новая запись.
Roland
UNец
 
Сообщения: 7
Зарегистрирован: 12 июн 2012, 17:02

Re: Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение Roland 23 июн 2012, 11:20

На сколько помню на запись Dictionary работает медленнее остальных типов коллекций, поэтому - ан мой взгляд -всё время дёргать List и перезаписывать его - не лучший вариант.
Roland
UNец
 
Сообщения: 7
Зарегистрирован: 12 июн 2012, 17:02

Re: Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение _Disa_ 23 июн 2012, 12:00

Ну про скорость записи наверное зависит от того куда хочется положить, но если ,конечно, это не важно, то любой линейно связанный список, будет быстрее. Но мне потом нужно в нем искать, поэтому и выбрал Dictionary (хотя нужно проверить оба варианта).

Видимо в класс оборачивать более "каноничное" будет. :-?
ArShift
_Disa_
UNIт
 
Сообщения: 97
Зарегистрирован: 07 мар 2012, 09:07
Откуда: Нерезиновая
Skype: islamov_denis
  • Сайт

Re: Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение Syberex 24 июн 2012, 14:15

Ну если очередей всего 5-6 то проще обращаться будет прямо по переменным или к массиву ...

А почему очередь в списке, а не в очереди :-?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Колекция уникальных списков (Dictionary <key<T1>, List<T2>>)

Сообщение _Disa_ 25 июн 2012, 10:17

Ну на самом деле мне лично нужна очередь в словаре (для удобства работы).

Там смысл - несколько state machine (поэтому очередь) выполняющихся парралельно.
Я сам бы к ним обращался бы только по индексам, но не только я один разрабатываю. Договорились, что будем обращаться по аббревиатурам (просто яснее, а с enum'ами в шарпе вообще какой-то бред, нужно вечно к int'у приводить, что жутко бесит). По этому и есть словарь.
В нем искать быстрее всего, хотя имеет смысл делать что-то типа stl'ого set'а (набор уникальных эллементов), но HashSet есть только с 4ого дотнета, а ждать когда он будет поддерживаться времени особо нет.
ArShift
_Disa_
UNIт
 
Сообщения: 97
Зарегистрирован: 07 мар 2012, 09:07
Откуда: Нерезиновая
Skype: islamov_denis
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14