package com.bt.springboot.util;
import com.bt.springboot.entity.Person;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zkx
* @Date 2022/4/26 13:40
*/
public class ListUtil {
public static void main(String[] args) {
Person[] persons1 = {new Person("张三", 10),
new Person("李四", 20),
new Person("张三", 10),
new Person("李四", 20)};
Person[] persons2 = {new Person("张三", 10),
new Person("李四", 20),
new Person("王五", 30),
new Person("赵六", 40)};
List<Person> list1 = Arrays.asList(persons1);
List<Person> list2 = Arrays.asList(persons2);
// 1.集合去重
System.out.println("------去重------");
List<Person> newList = ListUtil.duplicateRem(list1);
newList.forEach(System.out::println);
// 2.集合取交集
System.out.println("------交集------");
List<Person> intersection = ListUtil.getIntersection(newList, list2);
intersection.forEach(System.out::println);
// 3.集合取差集
System.out.println("------差集------");
List<Person> difference = ListUtil.getDifference(list2, list1);
difference.forEach(System.out::println);
// 4.集合取并集
System.out.println("------并集不去重------");
List<Person> and = ListUtil.getAnd(list1, list2, false);
and.forEach(System.out::println);
// 5.集合取并集去重
System.out.println("------并集去重------");
List<Person> andRemDupl = ListUtil.getAnd(list1, list2, true);
andRemDupl.forEach(System.out::println);
}
/**
* 集合去重
*
* @param list
* @return
*/
public static List<Person> duplicateRem(List<Person> list) {
List<Person> newList = new ArrayList<>();
list.forEach(obj -> {
if (!newList.contains(obj)) {
newList.add(obj);
}
});
return newList;
}
/**
* 取两个集合交集
*
* @param list1
* @param list2
* @return
*/
public static List<Person> getIntersection(List<Person> list1, List<Person> list2) {
return list1.stream().filter(list2::contains).collect(Collectors.toList());
}
/**
* 取两个集合差集
*
* @param list1
* @param list2
* @return
*/
public static List<Person> getDifference(List<Person> list1, List<Person> list2) {
return list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
}
/**
* 取两个集合并集
* @param list1
* @param list2
* @param remDupl
* @return
*/
public static List<Person> getAnd(List<Person> list1, List<Person> list2, boolean remDupl) {
List<Person> listAll1 = list1.parallelStream().collect(Collectors.toList());
List<Person> listAll2 = list2.parallelStream().collect(Collectors.toList());
listAll1.addAll(listAll2);
if (remDupl) {
return listAll1.stream().distinct().collect(Collectors.toList());
}
return listAll1;
}
}
list集合工具类 ListUtil 去重 差交并集
最新推荐文章于 2023-11-28 15:55:46 发布