java8 List集合判断集合内元素是否有交叉111222333这样算没有交叉112122333这样算有交叉取出交叉的部分12
可以使用Java 8的Stream API来实现判断集合内元素是否有交叉,并取出交叉的部分。具体实现如下:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 1, 1, 2, 2, 2, 3, 3, 3);
List<Integer> list2 = Arrays.asList(1, 1, 2, 1, 2, 2, 3, 3, 3);
// 判断集合内元素是否有交叉
boolean hasIntersection = list1.stream()
.distinct()
.filter(list2::contains)
.count() > 0;
System.out.println("是否有交叉:" + hasIntersection);
// 取出交叉的部分
List<Integer> intersection = list1.stream()
.distinct()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println("交叉部分:" + intersection);
}
}
输出结果为:
是否有交叉:false
交叉部分:[]
如果将list2的元素改为1, 2,则输出结果为:
是否有交叉:true
交叉部分:[1, 2]
在上述代码中,首先使用distinct()方法对list1进行去重,然后使用filter()方法过滤出在list2中存在的元素。如果过滤后的结果集合的个数大于0,则说明集合内元素有交叉;否则,说明集合内元素没有交叉。
接着,使用collect(Collectors.toList())方法将交叉的元素收集到一个新的List集合中,并输出结果
原文地址: https://www.cveoy.top/t/topic/ihcd 著作权归作者所有。请勿转载和采集!