Java 8 List 集合元素交叉判断与提取:高效 Stream API 实现
可以使用Java 8的Stream API来判断集合内元素是否有交叉,并且取出交叉部分的元素。\n\n首先,我们可以使用IntStream.range(0, list.size() - 1)来创建一个索引范围的流,然后使用filter方法来过滤出具有交叉的索引对。在过滤方法中,我们可以使用list.get(i)和list.get(i + 1)来获取相邻的元素,然后判断它们是否交叉。\n\n接下来,我们可以使用mapToObj方法将交叉的索引对映射为元素对,并使用distinct方法去除重复的元素对。最后,我们可以使用collect方法将元素对收集到一个新的列表中。\n\n下面是一个示例代码:\n\njava\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.IntStream;\n\npublic class Main {\n public static void main(String[] args) {\n List<Integer> list = new ArrayList<>();\n list.add(1);\n list.add(1);\n list.add(2);\n list.add(1);\n list.add(2);\n list.add(3);\n list.add(2);\n list.add(3);\n list.add(3);\n\n List<Integer> result = IntStream.range(0, list.size() - 1)\n .filter(i -> list.get(i).equals(list.get(i + 1)))\n .mapToObj(i -> list.subList(i, i + 2))\n .distinct()\n .flatMap(List::stream)\n .collect(Collectors.toList());\n\n System.out.println(result);\n }\n}\n\n\n输出结果为:[2, 1, 3, 2],表示集合内存在交叉,并且交叉部分的元素为2, 1和3, 2。
原文地址: https://www.cveoy.top/t/topic/pZww 著作权归作者所有。请勿转载和采集!