HashMap<Integer, ArrayList<Integer>> cityMap = new HashMap<>();
...
for (ArrayList<Integer> list : cityMap.values()) {
int size = list.size();
if (size > 0) {
list.removeIf(i -> true);
}
}
我不太明白removeIf在這種情況下做了什麼。特別是部分(我 - >真)。謝謝你的任何解釋。Java - removeIf example
.values()是一組名單,如果其中任何一個在他們的項目,整個列表被刪除。 '我 - >真'只意味着「永遠刪除」。 –
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#removeIf-java.util.function.Predicate- –
在這種情況下,這是一種非常複雜且低效的方式說'list.clear()'。同樣,'int size = list.size();如果(size> 0)...'是詳細說出if(!list.isEmpty())...'的方式。由於'ArrayList'總是可變的,並且清除已經是空的列表沒有任何作用,所以測試並不是必須的。你可以使用'for(ArrayList list:cityMap.values())list.clear();'代替。或者,如果您想引入lambda表達式:'cityMap.values()。forEach(list - > list.clear());'或方法引用:'cityMap.values()。forEach(List :: clear) ;'。所有這些變體都是一樣的。 –
Holger