将一个List集合按指定数目 均分为小的list集合
项目遇到想用的逻辑,有一个大的list对象集合,现在想按照指定的大小均分为小的list对象集合。
写一个操作方法:
public static <T> List<List<T>> split(List<T> resList, int count) {
if (resList == null || count < 1) {
return null;
}
List<List<T>> ret = new ArrayList<List<T>>();
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<T> itemList = new ArrayList<T>();
for (int j = 0; j < count; j++) {
itemList.add(resList.get(i * count + j));
}
ret.add(itemList);
}
// last的进行处理
if (last > 0) {
List<T> itemList = new ArrayList<T>();
for (int i = 0; i < last; i++) {
itemList.add(resList.get(pre * count + i));
}
ret.add(itemList);
}
}
return ret;
}
使用方法:
public void run() {
while (true) {
try {
List<SkyMirrorData> list = SkyMirrorDataCache.takeSkyMirrorData();
if (list == null || list.size() == 0) {
continue;
}
List<List<SkyMirrorData>> ret = DealList.split(list, 200);
if (ret.size() <= 1) {
Thread.sleep(3000);
}
for (List<SkyMirrorData> retList : ret) {
send(retList);
}
} catch (Exception e) {
log.error(ExceptionUtil.getMessage(e), e);
}
}
}
原文地址:https://blog.csdn.net/qq_33651286/article/details/142627765
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!