我正在尝试删除与values
中所有keys
相关联的所有HashMap
,但仍保留密钥。
以下是正确/最有效的方法吗?
for (Map.Entry<Kennel, List<Dog>> entry : hashMap.entrySet()) {
String key = entry.getKey().getId();
List<Dog> dogList = entry.getValue();
//Loop through the list associated with each key and delete each Dog in the list
for (int i=0; i<dogList.size(); i++){
dogService.delete(dogList.get(i));
dogService.save(dogList.get(i));
}
}
答案 0 :(得分:1)
简单:
for(dogs : hashMap.values()) {
for(dog : dogs) {
dogService.delete(dog);
dogService.save(dog);
}
dogs.clear();
}
答案 1 :(得分:1)
我不知道你要在这里完成什么,但如果你只想要唯一的密钥,那么你应该使用HashSet
代替HashMap
。
但是,如果要执行删除,您可以执行以下操作:
for (Kennel key : hashMap.keySet()) {
hashMap.put(key, null);
}
我写了Kennel key
,假设您HashMap
的密钥属于Kennel
类型。
答案 2 :(得分:0)
你可以在最后使用:
cgi.fix_pathinfo = 1
删除整个列表,但是如果你想在将来把新狗放入其中(我认为你想要),并且你的狗列表是可修改的,以下方法更适合内存:
hashMap.put(entry.getKey(), null);
因为您将来会避免分配新列表。另请注意for (Map.Entry<Kennel, List<Dog>> entry : hashMap.entrySet()) {
String key = entry.getKey().getId();
Iterator<Dog> it = entry.getValue().iterator();
while (it.hasNext()) {
Dog dog = it.next();
dogService.delete(dog);
dogService.save(dog);
it.remove();
}
}
的使用,允许在迭代时删除