可以使用Java 8的Stream API来判断集合内元素是否有交叉,并取出交叉部分的元素。下面是一个示例代码:

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(2);
        list.add(3);
        list.add(3);

        boolean hasIntersection = list.stream()
                .collect(ArrayList<Integer>::new, (result, element) -> {
                    if (result.isEmpty() || result.get(result.size() - 1) != element) {
                        result.add(element);
                    }
                }, (result1, result2) -> {})
                .size() != list.size();

        System.out.println("Has intersection: " + hasIntersection);

        List<Integer> intersection = list.stream()
                .collect(ArrayList<Integer>::new, (result, element) -> {
                    if (result.size() < 2 && (result.isEmpty() || result.get(result.size() - 1) != element)) {
                        result.add(element);
                    }
                }, (result1, result2) -> {})
                .subList(0, 2);

        System.out.println("Intersection: " + intersection);
    }
}

输出结果:

Has intersection: true
Intersection: [2, 1]

这段代码首先通过Stream API判断集合内元素是否有交叉,然后利用Stream API取出交叉部分的元素。在判断交叉的过程中,使用了一个辅助列表result来保存结果,如果当前元素与列表最后一个元素不相同,则将当前元素添加到result中。最后,通过判断辅助列表的大小是否与原列表大小相等来判断是否有交叉。在取出交叉部分的元素时,首先判断列表大小是否小于2,并且当前元素与列表最后一个元素不相同,如果满足条件,则将当前元素添加到result中。最后,通过subList(0, 2)方法来取出交叉部分的前2个元素。

Java 8 List 集合元素交叉判断与提取 - Stream API 示例

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

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