com.iframework.autoconfigure.utils.ListUtil Maven / Gradle / Ivy
package com.iframework.autoconfigure.utils;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ListUtil {
private ListUtil() {
}
/**
* 分割list为几个list
*
* @param list 源list
* @param max 分割list大小
* @param list 包含对象
* @return list
*/
public static List> splitList(List list, int max) {
int len = list.size();
int limit = (len + max - 1) / max;
return Stream.iterate(0, n -> n + 1)
.limit(limit).parallel()
.map(a -> list.stream().skip(a * max).limit(max)
.parallel().collect(Collectors.toList()))
.collect(Collectors.toList());
}
/**
* 获取list并集
*
* @param lists 集合列表
* @param list 包含对象
* @return list
*/
public static List unionList(List... lists) {
return Stream.of(lists)
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
/**
* 获取list去重并集
*
* @param lists 集合列表
* @param list 包含对象
* @return 去重list
*/
public static List unionDistinctList(List... lists) {
return Stream.of(lists)
.flatMap(Collection::stream)
.distinct()
.collect(Collectors.toList());
}
/**
* 获取list交集
*
* @param list1 集合1
* @param list2 集合2
* @param list 包含对象
* @return list
*/
public static List intersectionList(List list1, List list2) {
return list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
}
/**
* 获取list差集
*
* @param list1 集合1
* @param list2 集合2
* @param list 包含对象
* @return list
*/
public static List diffList1ToList2(List list1, List list2) {
return list1.stream()
.filter(item -> !list2.contains(item))
.collect(Collectors.toList());
}
/**
* 数组转 list
*
* @param arrays 数组
* @param 数组对象
* @return 不可变 list
*/
@SafeVarargs
public static List arrayToNoModifyList(T... arrays) {
return Arrays.asList(arrays);
}
/**
* 数组转 list
*
* @param arrays 数组
* @param 数组对象
* @return 可变 list
*/
@SafeVarargs
public static List arrayToList(T... arrays) {
return Stream.of(arrays).collect(Collectors.toList());
}
}