1.初衷是由于調用銀行接口的批量處理接口時,每次最多只能處理500條數據,但是當數據總數為510條時。我又不想第一次調用處理500條,第二次調用處理10條數據,我想要的是每次處理255條數據。
下面展示的是我的處理方法
2.寫了一個簡單的ListUtils:
package com.example.springboottest.common.util;
拆分list每100個一組,import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.google.common.collect.Lists;
/**
java中輸入字符串怎么寫?* List 工具類
* @author Neo
* @date 2018年4月16日13:13:37
*/
public class ListUtils {
java中list的用法?/**
* 將一個List均分成n個list,主要通過偏移量來實現的
*
* @param source 源集合
* @param limit 最大值
java把list分成多個list?* @return
*/
public static List> averageAssign(List source, int limit) {
if (null == source || source.isEmpty()) {
return Collections.emptyList();
java線程與并發編程實踐。}
List> result = new ArrayList<>();
int listCount = (source.size() - 1) / limit + 1;
int remaider = source.size() % listCount; // (先計算出余數)
int number = source.size() / listCount; // 然后是商
java判斷地址是否相等的方法?int offset = 0;// 偏移量
for (int i = 0; i < listCount; i++) {
List value;
if (remaider > 0) {
value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
java中equals和==的區別。remaider--;
offset++;
} else {
value = source.subList(i * number + offset, (i + 1) * number + offset);
}
Java大文件分割,result.add(value);
}
return result;
}
public static void main(String[] args) {
java中獲取當前時間?List list = new ArrayList();
for (int i = 0; i < 65; i++) {
list.add(i);
}
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();
});
System.out.println("====================================================");
// Guava 實現不平均分組
result = Lists.partition(list ,100);
result.forEach(l -> {
l.forEach(i ->
System.out.print(i + "\t")
);
System.out.println();
});
}
}
3.展示一下測試結果:
補充知識:Java8 Lambda 分割List
我就廢話不多說了,大家還是直接看代碼吧~
/**
* @author caishen
* @version 1.0
* @className CollectionUtils
* @date 2019/5/23 11:54
* 自分で書いたコードの各行を擔當する
* @dis 切割list工具類
**/
public class CollectionUtils {
public static List> divide(Listorigin , int size){
if(Assert.isEmpty(origin)){
return Collections.emptyList();
}
int block = (origin.size() + size -1) / size;
return IntStream.range(0,block).
boxed().map(i->{
int start = i*size;
int end = Math.min(start + size,origin.size());
return origin.subList(start,end);
}).collect(Collectors.toList());
}
public static void main(String[] args) {
System.out.println(divide(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 3));
}
}
以上這篇Java 實現將List平均分成若干個集合就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态