【Java】 List集合拆分按N进行分组

本文分享了一种不依赖外部库的List分组方法,通过自定义函数getSplitList实现List的分组,适用于多种场景。代码中使用了Java语言,通过计算子List的数量和大小,将原始List分割成多个子List。

今天看到一篇博文,写了关于对List进行分组的相关内容,我想到之前做项目时也遇到过要进行分组的处理,那我也想再重新来写一下代码,不参考任何资料,就靠自己的思路来写方法,并且测试通过,先分享出来,后续如果有更好的方式再继续优化,大致的代码如下:

package com.wzz.test;

import com.google.common.collect.Lists;

import java.util.Arrays;
import java.util.List;

public class MainTest {

    public static void main(String[] args) {

        List<String> strList = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9");

        System.out.println(getSplitList(strList, 6));

    }


    public static <T> List<List<T>> getSplitList(List<T> list, int n) {

        if (list == null) {
            throw new NullPointerException("List is null.");
        }

        if (n <= 0) {
            throw new IllegalArgumentException();
        }

        List<List<T>> groupList = Lists.newArrayList();

        List<T>  newList = Lists.newArrayList(list);

        int len = newList.size();

        int num = len % n == 0 ? len / n : (len / n + 1);

        for (int i = 0; i < num; i++) {

            groupList.add(list.subList(i * n, (i+1) * n > len ? len : (i+1) * n  ));
        }

        return groupList;

    }


}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随心而行_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值