java8 List集合判断集合内元素是否有交叉111222333这样算没有交叉112122333这样算有交叉取出交叉的部分
您可以使用Java 8的Stream API来解决这个问题。首先,您可以使用collect()方法将List转换为Set,以去除重复的元素。然后,您可以使用filter()方法来筛选出在原始List中重复的元素。最后,您可以使用collect(Collectors.toList())方法将筛选出的元素收集到一个新的List中。
以下是一个示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 1, 2, 1, 2, 2, 3, 3, 3);
Set<Integer> distinctElements = list.stream()
.collect(Collectors.toSet());
List<Integer> intersectedElements = list.stream()
.filter(e -> !distinctElements.add(e))
.collect(Collectors.toList());
System.out.println(intersectedElements);
}
}
输出结果为:[1, 2, 1, 2, 2, 3, 3, 3],这是原始List中重复的元素。
请注意,此解决方案假设您希望保留原始List中重复的元素的顺序。如果您不需要保留顺序,可以使用distinctElements集合的stream()方法替换list.stream()方法,以提高性能
原文地址: https://www.cveoy.top/t/topic/ihb9 著作权归作者所有。请勿转载和采集!