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
在这种情况下的作用。特别是部分(i -> true
)。谢谢你的任何解释。
答案 0 :(得分:7)
removeIf()
的Javadoc声明:
删除此集合中满足给定谓词的所有元素。
示例中的谓词始终为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)));
}};
只保留奇数:
for (List<Integer> list : lists) {
list.removeIf(i -> i % 2 == 0);
System.out.println(list);
}
<强>输出:强>
[1, 3]
[]
[1, 3, 5, 7]
答案 1 :(得分:0)
removeIf
将遍历列表中的每个元素并在其上运行指定的谓词(布尔函数)。如果谓词返回true
,它将从列表中删除。如果谓词返回false
,则不会。
在您的情况下,每个元素都会导致谓词返回true
,从而清除列表。