我需要检查两个列表是否有共同的元素。我想到了两种方法:
方法 01: 循环
private boolean func01 (List<String> list1, List<String> list2) {
for (String group : list1) {
for (String funcGroup : list2) {
if (group.equals(funcGroup)) {
return true;
}
}
}
return false;
}
方法 02:Lambda
private boolean func02 (List<String> list1, List<String> list2) {
return list1.stream().filter(list2::contains).findAny().isPresent();
}
在我看来,我认为第一种方法更易读。我需要了解的是,比较这两种方法是否存在任何差异或优势?
return list1.stream().anyMatch(list2::contains);
没问题。真正的问题在于使用Set
而不是List
将会非常值得。这样做所带来的益处巨大,甚至创建一个由列表填充的集合都是值得的。 - Joop Eggen