Набор ключей Java ConcurentMap () вопрос, когда карта изменяется и выполняющий итерации по набору ключей

Я думаю, вы хотите использовать дополнительное отображение:

xpath(xml, ~x"//A/B"l, number: ~x"text()")
|> Enum.map(fn %{number: number} -> number end)

Вывод:

['23', '34', nil]
6
задан Paul Whelan 27 March 2009 в 12:20
поделиться

2 ответа

Вы используете Java Параллельный HashMap? От набора ключей () документация это, кажется, ведет себя способом, который Вы нашли бы полезным.

Возвращает представление набора ключей, содержавшихся в этой карте. Набор поддерживается картой, таким образом, изменения в карте отражаются в наборе, и наоборот. Набор поддерживает удаление элемента, которое удаляет соответствующее отображение из этой карты, через Iterator.remove, Set.remove, removeAll, retainAll, и четкие операции. Это не поддерживает добавление или addAll операции. Возвращенный итератор представления является "слабо последовательным" итератором, который никогда не будет бросать ConcurrentModificationException и гарантирует, что пересек элементы, поскольку они существовали на конструкцию итератора, и может (но не гарантироваться), отражают любые модификации, последующие за конструкцией.

т.е. можно удалить материал, и необходимо быть в порядке.

Если Вы не используете эту реализацию, то, которые являются Вами использование (и почему? Не будучи забавным, но было бы интересно знать, почему Вы сделали тот выбор),

6
ответ дан 17 December 2019 в 02:33
поделиться

Если кэш LRU будет отвечать всем требованиям достаточно хорошо для Вас, проверить LinkedHashMap — он делает реализацию кэша LRU тривиальной, и затем можно сделать результаты ориентированными на многопотоковое исполнение путем обертывания его с вызовом к Collections.synchronizedMap.

0
ответ дан 17 December 2019 в 02:33
поделиться
Другие вопросы по тегам:

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