package com.ldj.cloud.user.demo.list;
import org.apache.commons.collections4.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* User: ldj
* Date: 2024/6/8
* Time: 15:02
* Description: No Description
*/
public class Test {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(2);
list1.add(3);
list1.add(3);
list1.add(4);
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(2);
list2.add(3);
list2.add(3);
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
Collection<Integer> intersection1 = CollectionUtils.intersection(list1, list2);
System.out.println("交集:" + intersection1);
Collection<Integer> union = CollectionUtils.union(list1, list2);
System.out.println("并集:" + union);
//找出list重复的元素!!!!!
//面试场景题,使用redis找出重复的元素,可以使用redis 的set的数据类型的api去重,然后求差集
Collection<Integer> subtract = CollectionUtils.subtract(list1, set);
System.out.println("差集:" + subtract);
}
//交集
public static <T> List<T> intersection(List<T> list1, List<T> list2) {
return list1.stream().filter(list2::contains).collect(Collectors.toList());
}
//并集(不去重)
public static <T> List<T> unionAll(List<T> list1, List<T> list2) {
boolean b = list1.addAll(list2);
if (b) {
return list1;
}
return null;
}
//并集(去重)
public static <T> List<T> union(List<T> list1, List<T> list2) {
boolean b = list1.addAll(list2);
if (b) {
return list1.stream().distinct().collect(Collectors.toList());
}
return null;
}
//差集
public static <T> List<T> subtract(List<T> list1, List<T> list2) {
return list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
}
}
List求交集、并集、差集
于 2024-06-08 15:43:39 首次发布