All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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());
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy