把一个大的List集合拆分几个小的List集合方法
【把一个大的List集合拆分几个小的List集合方法】背景:
项目中遇到根据项目id集合去别的系统,发网络请求拿数据。
但是如果一次性去获取,那边运算非常慢,会超时。
所以要分批次去拿数据(分页)。
方案一
/**
*拆分集合
*@param
*@param resList 要拆分的集合
*@param count 每个集合的元素个数
*@return 返回拆分后的各个集合
**/
public static List> split(List resList, int count) {
if (resList == null || count < 1){
return null;
}
List> ret = new ArrayList>();
int size = resList.size();
if (size <= count) {
// 数据量不足count指定的大小
ret.add(resList);
} else {
int pre = size / count;
int last = size % count;
// 前面pre个集合,每个大小都是count个元素
for (int i = 0;
i < pre;
i++) {
List itemList = new ArrayList();
for (int j = 0;
j < count;
j++) {
itemList.add(resList.get(i * count + j));
}
ret.add(itemList);
}
// last的进行处理
if (last > 0) {
List itemList = new ArrayList();
for (int i = 0;
i < last;
i++) {
itemList.add(resList.get(pre * count + i));
}
ret.add(itemList);
}
}
return ret;
}/** 测试方法 */
public static void main(String[] args) {
List resList = Arrays.asList("0", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
"18", "19", "20", "21", "22", "23", "24", "25", "26", "27",
"28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47",
"48", "49", "50", "51", "52", "53", "54", "55", "56", "57",
"58", "59", "60", "61", "62", "63", "64", "65", "66", "67",
"68", "69", "70", "71", "72", "73", "74", "75", "76", "77",
"78", "79", "80", "81", "82", "83", "84", "85", "86", "87",
"88", "89", "90", "91", "92", "93", "94", "95", "96", "97",
"98","99","100");
List ret = split(resList, 10);
for (int i = 0;
i < ret.size();
i++) {
System.out.println(ret.get(i));
}}
方案二
/** * @param args */
public static void main(String[] args) {
List resList = Arrays.asList("0", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
"18", "19", "20", "21", "22", "23", "24", "25", "26", "27",
"28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47",
"48", "49", "50", "51", "52", "53", "54", "55", "56", "57",
"58", "59", "60", "61", "62", "63", "64", "65", "66", "67",
"68", "69", "70", "71", "72", "73", "74", "75", "76", "77",
"78", "79", "80", "81", "82", "83", "84", "85", "86", "87",
"88", "89", "90", "91", "92", "93", "94", "95", "96", "97",
"98","99","100");
resList = new ArrayList<>(resList);
int pageSize = 5;
while (!resList.isEmpty()){
List splitList = resList.subList(0, pageSize < resList.size() ? pageSize : resList.size());
System.out.println("-----"+splitList);
// 清除已使用过的数据
splitList.clear();
}
}
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 一个人的碎碎念
- 死结。
- Y房东的后半生14
- 七年之痒之后
- 我从来不做坏事
- 异地恋中,逐渐适应一个人到底意味着什么()
- 迷失的世界(二十七)