可以使用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集合中,并输出结果

java8 List集合判断集合内元素是否有交叉111222333这样算没有交叉112122333这样算有交叉取出交叉的部分12

原文地址: https://www.cveoy.top/t/topic/ihcd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录