Java 使用Stream获取两个List交集:filter方法和anyMatch错误解析
使用Stream的filter方法过滤出两个List中相同的元素,并将其收集到一个新的List中,可以使用以下代码:\n\njava\nList<String> list1 = Arrays.asList("A", "B", "C");\nList<String> list2 = Arrays.asList("B", "C", "D");\n\nList<String> intersection = list1.stream()\n .filter(list2::contains)\n .collect(Collectors.toList());\n\nSystem.out.println(intersection);\n\n\n输出结果为:[B, C]\n\n在上述代码中,我们使用list1的stream()方法创建一个Stream流,然后使用filter方法过滤出在list2中存在的元素。filter方法的参数是一个Predicate接口,我们使用list2的contains方法来判断元素是否存在于list2中。最后使用collect方法将过滤后的元素收集到一个新的List中。\n\n你提到的使用stream1.filter(stream2::anyMatch)会出现类型不兼容的错误。这是因为filter方法的参数应该是一个Predicate接口,而anyMatch方法返回的是一个boolean类型的值,并不符合Predicate的要求。正确的做法是使用filter方法的参数是一个lambda表达式,而不是方法引用。
原文地址: https://www.cveoy.top/t/topic/m7pD 著作权归作者所有。请勿转载和采集!