Java 将List平均分成若干个集合

标签: 集合 平均 等分
2人阅读 评论(0) 收藏 举报
分类:

1.初衷是由于调用银行接口的批量处理接口时,每次最多只能处理500条数据,但是当数据总数为510条时。我又不想第一次调用处理500条,第二次调用处理10条数据,我想要的是每次处理255条数据。下面展示的是我的处理方法

2.写了一个简单的ListUtils:

package com.example.springboottest.common.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * List 工具类
 * @author Neo 
 * @date 2018年4月16日13:13:37
 */
public class ListUtils {


    /**
     * 将一个List均分成n个list,主要通过偏移量来实现的
     *
     * @param source 源集合
     * @param limit 最大值
     * @return
     */
    public static <T> List<List<T>> averageAssign(List<T> source, int limit) {
        if (null == source || source.isEmpty()) {
            return Collections.emptyList();
        }
        List<List<T>> result = new ArrayList<>();
        int listCount = (source.size() - 1) / limit + 1;
        int remaider = source.size() % listCount; // (先计算出余数)
        int number = source.size() / listCount; // 然后是商
        int offset = 0;// 偏移量
        for (int i = 0; i < listCount; i++) {
            List<T> value;
            if (remaider > 0) {
                value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
                remaider--;
                offset++;
            } else {
                value = source.subList(i * number + offset, (i + 1) * number + offset);
            }
            result.add(value);
        }
        return result;
    }

    public static void main(String[] args) {
        List list = new ArrayList();
        for (int i = 0; i < 65; i++) {
            list.add(i);
        }
        List<List> result = averageAssign(list, 15);
        result.forEach(l -> {
            l.forEach(i ->
                    System.out.print(i + "\t")
            );
            System.out.println();
        });
        System.out.println("====================================================");
        result = averageAssign(list, 20);
        result.forEach(l -> {
            l.forEach(i ->
                    System.out.print(i + "\t")
            );
            System.out.println();
        });
    }
}

3.展示一下测试结果:


查看评论

将一个集合list等分成几个集合

int pageSize = 4; int total = splist.size(); int pageCount = total % pageSize...
  • yueyeqingshan
  • yueyeqingshan
  • 2017-02-03 14:00:51
  • 1564

将list按指定大小等分,最后多余的单独一份

//将list按blockSize大小等分,最后多余的单独一份 public static List> subList(List list, int blockSize) { List> li...
  • hfhwfw
  • hfhwfw
  • 2014-12-10 11:08:28
  • 3626

JAVA中将一个List等分成n个list的工具方法

/** * 将一个list均分成n个list,主要通过偏移量来实现的 * @param source * @return */ public static List> averag...
  • u010523770
  • u010523770
  • 2017-01-17 17:41:15
  • 7883

java 把一个大list分成N个小list,然后用map存储的小方法

java 把一个大list分成N个小list,然后用map存储的小方法
  • liangrui1988
  • liangrui1988
  • 2016-12-07 16:03:05
  • 1229

把一个List拆分为几个大小一样的List

感谢有奉献精神的人 转自:http://blog.csdn.net/tengdazhang770960436/article/details/9145405 [java...
  • zhangliao613
  • zhangliao613
  • 2016-05-10 11:03:18
  • 1678

Java List按大小分片,平均切分

写代码时有时需要将List按XX大小分片,或者均分成几个List,此时最好不要new很多新的List然后向里面add,这样做效率很低,下面介绍两种高效分片的方法。 1. 按大小分片 直接用...
  • zhaohansk
  • zhaohansk
  • 2017-08-19 13:59:12
  • 1629

分隔List集合,按指定大小,将集合分成多个

/**  * 常用工具类  * @author hetiewei(贺铁伟)  *  */ public class JayCommonUtil { /** * 按指定大小,分隔集合,将集合按规定个...
  • he90227
  • he90227
  • 2016-11-11 16:19:40
  • 5791

java 平均拆分List

该方法用于平均拆分List,方法为: public class ListSplit { List> eList = new ArrayList>(); List gList; p...
  • feiyang123_
  • feiyang123_
  • 2013-12-25 20:25:13
  • 1872

List数据平均分放到三个List中的方法比较

第一种方法: //把List中数据平均分放在三个List中      List firstList = new ArrayList();        List secondList = new Ar...
  • weizhang_son_ding
  • weizhang_son_ding
  • 2009-12-28 11:53:00
  • 2976

java 将list按照指定数量分成小list

1、自己编写相关代码: 2、使用guava: import java.util.ArrayList; import java.util.List; import com.googl...
  • liuxiao723846
  • liuxiao723846
  • 2017-07-21 19:09:18
  • 3196
    个人资料
    等级:
    访问量: 2万+
    积分: 473
    排名: 10万+
    博客专栏
    最新评论