1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 实现 list拆分 按照大小拆分 按照个数拆分

java 实现 list拆分 按照大小拆分 按照个数拆分

时间:2021-01-01 21:16:08

相关推荐

java 实现 list拆分 按照大小拆分 按照个数拆分

package com.micro.order.util;import mon.collect.Lists;import java.util.ArrayList;import java.util.List;/*** 大list拆分为多个小list处理** @author zbo* @param <T>*/public class ListSplitUtil<T extends Object> {/*** @param list 要拆分的list* @param size 每次拆分的大小* @param <T>* @return*/public static <T> List<List<T>> splitSize(List<T> list, int size) {if (list == null || list.size() == 0) {return null;}// 获得数据总量int count = list.size();// 计算出要分成几个批次int pageCount = (count / size) + (count % size == 0 ? 0 : 1);List<List<T>> temp = new ArrayList<>(pageCount);for (int i = 0, from = 0, to = 0; i < pageCount; i++) {from = i * size;to = from + size;// 如果超过总数量,则取到最后一个数的位置to = to > count ? count : to;// 对list 进行拆分List<T> list1 = list.subList(from, to);// 将拆分后的list放入大List返回temp.add(list1);// 也可以改造本方法,直接在此处做操作}return temp;}/*** @param list 要拆分的list* @param sum 要拆分为多少个List* @param <T>* @return*/public static <T> List<List<T>> splitNum(List<T> list, int sum) {if (list == null || list.size() == 0) {return null;}if (list.size() < sum) {return null;}// 获得数据总量int count = list.size();// 计算出每个批次要分多少int pageCount = (count / sum);//计算出能不能平均分配 如果不能 最后一个list有几个元素int countTemp = count % sum;int lastSize = pageCount;if (countTemp != 0) {lastSize = pageCount + countTemp;}List<List<T>> temp = new ArrayList<>(pageCount);for (int i = 0, from = 0, to = 0; i < sum; i++) {from = i * pageCount;to = from + pageCount;// 如果超过总数量,则取到最后一个数的位置List<T> list1 = Lists.newArrayList();if (i == (sum - 1)) {// 最后一个listlist1 = list.subList(from, list.size());} else {// 对list 进行拆分list1 = list.subList(from, to);// 将拆分后的list放入大List返回}temp.add(list1);// 也可以改造本方法,直接在此处做操作}return temp;}// 测试方法public static void main(String[] args) {List<Integer> list = new ArrayList<>();for (int i = 0; i < 52; i++) {list.add(i);}List<List<Integer>> split = splitNum(list, 3);for (int i = 0, length = split.size(); i < length; i++) {System.out.println(split.get(i));}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。