📅  最后修改于: 2023-12-03 15:15:54.734000             🧑  作者: Mango
在Java 8中,我们可以使用anyMatch
方法来检查一个列表中是否存在符合给定条件的元素。我们通常使用Lambda表达式来表示条件。
boolean anyMatch(Predicate<? super T> predicate)
任何元素匹配给定的谓词,如果流中存在,则返回true。否则返回false。
但是,如果我们有两个列表,并且想检查它们是否存在相同的元素,我们该如何做呢?这就是本文要解决的问题。
使用两个for循环可以遍历两个列表中的每个元素,并将其比较,如果找到相同的元素,则返回true。否则返回false。
List<String> list1 = Arrays.asList("Java", "C++", "Python", "Ruby");
List<String> list2 = Arrays.asList("C#", "Java", "PHP", "Python");
boolean isExists = false;
for(String s1 : list1) {
for(String s2 : list2) {
if(s1.equals(s2)) {
isExists = true;
break;
}
}
}
if(isExists) {
System.out.println("有匹配的元素");
} else {
System.out.println("没有匹配的元素");
}
该代码段的输出为:“有匹配的元素”。
Java 8的任何匹配方法可以轻松找到两个列表中的任何匹配项。
List<String> list1 = Arrays.asList("Java", "C++", "Python", "Ruby");
List<String> list2 = Arrays.asList("C#", "Java", "PHP", "Python");
boolean isExists = list1.stream()
.anyMatch(list2::contains);
if(isExists) {
System.out.println("有匹配的元素");
} else {
System.out.println("没有匹配的元素");
}
输出与方法一相同:“有匹配的元素”。
在这里,我们使用list1
的stream()
方法将其转换为流。接下来,我们使用anyMatch
方法来检查list2
中是否包含与list1
中的任何元素匹配的元素。这里提到一个新的概念,即方法引用。在本例中,我们使用list2 :: contains
表示对list2
列表的contains
方法的引用。这是Java 8中新添加的功能之一,可以使代码更加简洁和可读。
使用Java 8的anyMatch方法可以更轻松地检查两个列表中是否存在匹配的元素,而无需使用任意数量的for循环。在代码的可读性和清晰度方面也有很大的提高。现在,我们可以更加自信地解决类似的问题了!