Может ли любой орган помочь мне, предоставив ответ на примере, как удалить записи из HashMap во время доступа к записям.Как управлять HashMap при доступе?
-2
A
ответ
1
Использование ConcurrentHashMap
Хэш таблица поддерживает полный параллелизм извлечений и регулируемой ожидаемой параллелизм для обновлений.
Вот хороший example
0
Через записей итератора:
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("test", "test1");
myMap.put("test2", "test2");
Iterator<Entry<String, String>> it = myMap.entrySet().iterator();
while(it.hasNext()) {
if("test".equals(it.next().getKey())) {
it.remove();
}
}
0
Самый простой способ для перебора на копии ключей:
final Map<String, Integer> map = new HashMap<String, Integer>();
map.put("test", 0);
map.put("removeMe", 1);
map.put("dontRemoveMe", 2);
for (final String key : map.keySet().toArray(new String[map.keySet().size()]))
if (key.startsWith("remove"))
map.remove(key);
Но если ваш Map
больше, чем несколько записей, вы можете столкнуться с плохими показателями, и вы можете использовать iterator
удалить:
final Iterator<Entry<String, Integer>> iter = map.entrySet().iterator();
while (iter.hasNext())
if (iter.next().getKey().startsWith("remove"))
iter.remove();
[Что вы пробовали] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) к тому же просят нас? –
Что именно вы подразумеваете под «во время доступа к записям»? Мы говорим о нескольких потоках (используйте ConcurrentHashMap) или при повторении записей (используйте Iterator.remove)? –