При использовании jQuery необходимо присоединять события через свой собственный механизм события а не при помощи "на" свойствах (onclick и т.д.). Это также имеет свой собственный метод инициирования события, точно названный' триггер ', который необходимо использовать для активации события представления формы.
Если вы посмотрите подробности ConcurrentBag
, то обнаружите, что внутри это в основном настроенный связанный список.
Поскольку сумки могут содержать дубликаты и недоступны по индексу, двусвязный список - очень хороший вариант для реализации. Это позволяет блокировке быть довольно мелкой для вставки и удаления (вам не нужно блокировать всю коллекцию, только узлы вокруг, где вы вставляете / удаляете). Поскольку вы не беспокоитесь о дубликатах, хеширование не требуется. Это делает двойной список идеальным.
Поскольку порядок не имеет значения, ConcurrentBag может за кулисами использовать хеш-таблицу, чтобы обеспечить быстрое извлечение данных. Но в отличие от Hashset мешок принимает дубликаты. Возможно, каждый элемент может быть связан со свойством Count, которое устанавливается в 1 при добавлении элемента. Если вы добавите тот же элемент во второй раз, вы можете просто увеличить свойство Count этого элемента.
Затем, чтобы удалить элемент, у которого счетчик больше единицы, вы можете просто уменьшить счетчик для этого элемента. Если бы счетчик был равен единице, вы бы удалили пару «Элемент-количество» из хеш-таблицы.
Что ж, в smalltalk (откуда взялось понятие мешка) коллекция в основном такая же, как и хэш, хотя и допускает дублирование. Однако вместо того, чтобы хранить повторяющийся объект, он поддерживает «счетчик вхождений», например, счетчик ссылок для каждого объекта. Если ConcurrentBag - точная реализация, это должно стать отправной точкой.
Я считаю, что понятие «Сумка» является синонимом «Мультинабора».
Существует ряд реализаций «Сумка» / «Мультимножество» (это, как оказалось, Java), которые имеют открытый исходный код, если вам интересно, как они реализованы.
Эти реализации показывают, что «мешок» может быть реализован любым количеством способов в зависимости от ваших потребностей. Есть примеры TreeMultiset, HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset.
Коллекции Google
У Google есть несколько реализаций MultiSet , одна из которых - ConcurrentHashMultiset.
Apache Commons
В Apache есть несколько реализаций «мешков».