Как классу мог бы понравиться ConcurrentBag <T>.NET, который будет реализован?

При использовании jQuery необходимо присоединять события через свой собственный механизм события а не при помощи "на" свойствах (onclick и т.д.). Это также имеет свой собственный метод инициирования события, точно названный' триггер ', который необходимо использовать для активации события представления формы.

12
задан Dan Tao 6 November 2009 в 17:59
поделиться

4 ответа

Если вы посмотрите подробности ConcurrentBag , то обнаружите, что внутри это в основном настроенный связанный список.

Поскольку сумки могут содержать дубликаты и недоступны по индексу, двусвязный список - очень хороший вариант для реализации. Это позволяет блокировке быть довольно мелкой для вставки и удаления (вам не нужно блокировать всю коллекцию, только узлы вокруг, где вы вставляете / удаляете). Поскольку вы не беспокоитесь о дубликатах, хеширование не требуется. Это делает двойной список идеальным.

9
ответ дан 2 December 2019 в 22:05
поделиться

Поскольку порядок не имеет значения, ConcurrentBag может за кулисами использовать хеш-таблицу, чтобы обеспечить быстрое извлечение данных. Но в отличие от Hashset мешок принимает дубликаты. Возможно, каждый элемент может быть связан со свойством Count, которое устанавливается в 1 при добавлении элемента. Если вы добавите тот же элемент во второй раз, вы можете просто увеличить свойство Count этого элемента.

Затем, чтобы удалить элемент, у которого счетчик больше единицы, вы можете просто уменьшить счетчик для этого элемента. Если бы счетчик был равен единице, вы бы удалили пару «Элемент-количество» из хеш-таблицы.

0
ответ дан 2 December 2019 в 22:05
поделиться

Что ж, в smalltalk (откуда взялось понятие мешка) коллекция в основном такая же, как и хэш, хотя и допускает дублирование. Однако вместо того, чтобы хранить повторяющийся объект, он поддерживает «счетчик вхождений», например, счетчик ссылок для каждого объекта. Если ConcurrentBag - точная реализация, это должно стать отправной точкой.

0
ответ дан 2 December 2019 в 22:05
поделиться

Я считаю, что понятие «Сумка» является синонимом «Мультинабора».

Существует ряд реализаций «Сумка» / «Мультимножество» (это, как оказалось, Java), которые имеют открытый исходный код, если вам интересно, как они реализованы.

Эти реализации показывают, что «мешок» может быть реализован любым количеством способов в зависимости от ваших потребностей. Есть примеры TreeMultiset, HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset.

Коллекции Google
У Google есть несколько реализаций MultiSet , одна из которых - ConcurrentHashMultiset.

Apache Commons
В Apache есть несколько реализаций «мешков».

0
ответ дан 2 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: