В настоящее время у меня проблема с удалением ключа в хэш-карте. Я создал хэш-карту внутри хэш-карты. Мне нужно удалить ключ по значению внутри хэш-карты в хэш-карте. Таким образом, хэш-карта выглядит так:
HashMap<String, String> people_attributes = new HashMap<String, String>();
Map<String, HashMap<String, String>> people = new HashMap<String, HashMap<String, String>>();
Если я попытаюсь удалить ключ, заменив remove_name.add(p_name)
на people.remove(p_name)
, я получу java.util.ConcurrentModificationException
. Прямо сейчас я использую список массивов, чтобы добавить ключи, которые необходимо удалить, а затем пройтись по массиву, чтобы удалить ключи из хэш-карты.
Пока это решение:
for(String p_name : people.keySet()) { // search through people with attribute
for(String p_attributes : people.get(p_name).keySet()) { // search through attributes map
if(p_attributes.equals(g_att)) { // when current attributes equal to guess attribute
p_value = people.get(p_name).get(p_attributes);
if(!p_value.equals(g_value)) { // if current value doesn't equal to guess value
remove_name.add(p_name);
}
}
}
}
for(String r_name : remove_name) {
people.remove(r_name);
}
РЕДАКТИРОВАТЬ:
Проблема: я знаю, что могу использовать итератор, как и все остальные вопросы, заданные в stackoverflow, но я не знаю, как дважды зациклиться, чтобы попасть в хэш-карту people_attributes.
while(it.hasNext())
, чтобы получить хэш-карту people_attributes - person Jay Lee   schedule 07.05.2018while
? - person Andrew Tobilko   schedule 08.05.2018