ขณะนี้ฉันมีปัญหาในการลบคีย์ในแฮชแมป ฉันสร้างแฮชแมปภายในแฮชแมป ฉันต้องลบคีย์ด้วยค่าภายในแฮชแมปภายในแฮชแมป ดังนั้นแฮชแมปจึงมีลักษณะดังนี้:
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
ตอนนี้ฉันใช้ arraylist เพื่อเพิ่มคีย์ที่ต้องลบออก จากนั้นวนซ้ำ arraylist เพื่อลบคีย์ออกจากแฮชแมป
จนถึงตอนนี้นี่คือวิธีแก้ปัญหา:
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 hashmap - person Jay Lee   schedule 07.05.2018while
สองคำสั่งติดต่อกัน? - person Andrew Tobilko   schedule 08.05.2018