目的地-Destination 前程似锦、未来可期、寻得良人、共赴白头,祝你也祝我。
博主 目的地-Destination
沪ICP备16003146号-2沪公网安备 31010702004922号萌ICP备20238488号博主 昨天 17:25 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 19 人
歌曲封面 未知作品

沪ICP备16003146号-2

沪公网安备 31010702004922号

萌ICP备20238488号

网站已运行 7 年 342 天 0 小时 57 分

Powered by Typecho & Sunny

20 online · 69 ms

Title

Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)

Chrison

·

烂笔头

·

Article
⚠️ 本文最后更新于2022年12月13日,已经过了679天没有更新,若内容或图片失效,请留言反馈

将一组数据平均分成n组

即:数据分组数固定为N,每组数据个数不定,每组个数由List列表数据总长度决定

♾️ text 代码:
/**
 * 将一组数据平均分成n组
 *
 * @param source 要分组的数据源
 * @param n      平均分成n组
 * @param <T>
 * @return
 */
public static <T> List<List<T>> averageAssign(List<T> source, int n) {
    List<List<T>> result = new ArrayList<List<T>>();
    //(先计算出余数)
    int remainder = source.size() % n;
    //然后是商
    int number = source.size() / n;
    //偏移量
    int offset = 0;
    for (int i = 0; i < n; i++) {
        List<T> value = null;
        if (remainder > 0) {
            value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
            remainder--;
            offset++;
        } else {
            value = source.subList(i * number + offset, (i + 1) * number + offset);
        }
        result.add(value);
    }
    return result;
}


将一组数据固定分组,每组n个元素

即:数据分组数不定,每组数据固定为N个,分组数由List列表数据总长度决定

方法一:

♾️ text 代码:
/**
 * 将一组数据固定分组,每组n个元素
 * @param source 要分组的数据源
 * @param n      每组n个元素
 * @param <T>
 * @return
 */
public static <T> List<List<T>> fixedGrouping(List<T> source, int n) {

    if (null == source || source.size() == 0 || n <= 0)
        return null;
    List<List<T>> result = new ArrayList<List<T>>();

    int sourceSize = source.size();
    int size = (source.size() / n) + 1;
    for (int i = 0; i < size; i++) {
        List<T> subset = new ArrayList<T>();
        for (int j = i * n; j < (i + 1) * n; j++) {
            if (j < sourceSize) {
                subset.add(source.get(j));
            }
        }
        result.add(subset);
    }
    return result;
}

方法二

♾️ text 代码:
/**
 * 将一组数据固定分组,每组n个元素
 *
 * @param source 要分组的数据源
 * @param n      每组n个元素
 * @param <T>
 * @return
 */
public static <T> List<List<T>> fixedGrouping2(List<T> source, int n) {

    if (null == source || source.size() == 0 || n <= 0)
        return null;
    List<List<T>> result = new ArrayList<List<T>>();
    int remainder = source.size() % n;
    int size = (source.size() / n);
    for (int i = 0; i < size; i++) {
        List<T> subset = null;
        subset = source.subList(i * n, (i + 1) * n);
        result.add(subset);
    }
    if (remainder > 0) {
        List<T> subset = null;
        subset = source.subList(size * n, size * n + remainder);
        result.add(subset);
    }
    return result;
}
现在已有 220 次阅读,0 条评论,0 人点赞
Author:Chrison
作者
Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)
当前文章累计共 2710 字,阅读大概需要 1 分钟。
2023!又重新更换了主题模板,真是闲的~
2023年2月16日 · 9评论
科普| 物联网卡最全介绍(一)
2023年6月18日 · 6评论
将文章内的超链接改成卡片式链接展示
2023年2月13日 · 0评论
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主