使用stream流实现的List工具类

【饿了么、美团】外卖红包领取地址 >> 能省一点是一点

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 使用stream流实现的List工具类
 */
public class ListUtil {

    /**
     * 集合拆分
     *
     * @param collection 原始集合
     * @param size       子集合长度
     * @param <T>
     * @return
     */
    public static <T> List<List<T>> partition(Collection<T> collection, int size) {
        if (size <= 0) {
            throw new IllegalArgumentException("size must be greater than 0");
        }
        List<T> list = toArrayList(collection);
        //计算可以拆分成几个list
        int count = (int) Math.ceil(list.size() / (double) size);
        //使用流进行拆分
        return Stream.iterate(0, n -> n + 1).limit(count).map(
                i -> list.stream().skip((long) i * size).limit(size).collect(Collectors.toList())
        ).collect(Collectors.toList());
    }

    /**
     * 对List分页取值(页码从1开始)
     *
     * @param list
     * @param pageNum
     * @param pageSize
     * @param <T>
     * @return
     */
    public static <T> List<T> page(List<T> list, int pageNum, int pageSize) {
        if (pageNum <= 0 || pageSize <= 0) {
            throw new IllegalArgumentException("pageNum or pageSize must be greater than 0");
        }
        //使用流进行分页取值
        return list.stream()
                .skip((long) (pageNum - 1) * pageSize)
                .limit(pageSize)
                .collect(Collectors.toList());
    }

    /**
     * 对List进行截取
     *
     * @param list
     * @param start
     * @param end
     * @param <T>
     * @return
     */
    public static <T> List<T> sub(List<T> list, int start, int end) {
        start = Math.max(start, 0);
        end = Math.max(end, 0);
        //使用流进行截取
        return list.stream()
                .skip(start)
                .limit(end - start)
                .collect(Collectors.toList());
    }

    /**
     * 集合转成ArrayList
     *
     * @param collection
     * @param <T>
     * @return
     */
    public static <T> List<T> toArrayList(Collection<T> collection) {
        return collection == null ? new ArrayList<>() : new ArrayList<>(collection);
    }

}

觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

创意书架子桌上树形小书架子桌面简易书架简约现代办公置物架 象牙白树形书架
¥33.00
小飞侠彼得潘 原著精译&非改写 孩子的成长故事 中小学生更易读懂 余秋雨寄语 梅子涵作序推荐
¥16.46
曼秀雷敦 蜂蜜植萃精华油润唇膏4g小蜜油-无香料(唇膏男女 保湿补水 )
¥30.90
笔墨先锋 衡水体 小学生英语同步描摹字帖 外研一年级起点 五年级下册
¥17.80
萨啦咪小鸡腿熟食温州鸡腿即食休闲零食大礼包小吃肉干烤制鸡翅根网红 蜂蜜味【12包盒装】
¥34.90
马奇新新 马来西亚进口munchy's威化饼干蛋卷休闲零食点心多口味下午茶 巧克力味威化90g
¥8.80
振德(ZHENDE)手动洗鼻器套装成人儿童鼻腔清洗器冲洗器鼻炎鼻窦炎洗鼻盐生理性盐水洗鼻喷雾 开关洗鼻器300ML+20袋盐+喷雾瓶(自动出水)
¥24.50
铂芬幼儿园棉被子收纳袋整理袋学生行李打包袋太空人中
¥26.90