HashMap<Integer, ArrayList<Integer>> cityMap = new HashMap<>();
...
for (ArrayList<Integer> list : cityMap.values()) {
int size = list.size();
if (size > 0) {
list.removeIf(i -> true);
}
}
Run Code Online (Sandbox Code Playgroud)
我不太明白在这种情况下removeIf是做什么的.特别是部分(i - > true).谢谢你的任何解释.
Javadoc removeIf()州:
删除此集合中满足给定谓词的所有元素.
示例中的谓词总是true因为您i将列表中的每个整数映射到true表达式:i -> true.
我添加了一个更简单的示例,它删除所有偶数整数并通过谓词保留所有奇数整数i % 2 == 0:
丑陋的设置:
List<List<Integer>> lists = new ArrayList<List<Integer>>() {{
add(new ArrayList<>(Arrays.asList(1,2,3,4)));
add(new ArrayList<>(Arrays.asList(2,4,6,8)));
add(new ArrayList<>(Arrays.asList(1,3,5,7)));
}};
Run Code Online (Sandbox Code Playgroud)
只保留奇数:
for (List<Integer> list : lists) {
list.removeIf(i -> i % 2 == 0);
System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)
输出:
[1, 3]
[]
[1, 3, 5, 7]
Run Code Online (Sandbox Code Playgroud)
removeIf将遍历列表中的每个元素并对其运行指定的谓词(布尔函数)。如果谓词返回true,它将从列表中删除。如果谓词返回false,则不会。
在您的情况下,每个元素都会导致谓词返回true,从而清除列表。