这里做个java集合/数组拆分多个子集合/数组的两种实现方式的笔记。
方式 一:
/**
* 拆分集合
* @param datas
* @param splitSize
* @param <T>
* @return
*/
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
if (datas == null || splitSize < 1) {
return null;
}
int totalSize = datas.size();
//获取要拆分子数组个数
int count = (totalSize % splitSize == 0) ?
(totalSize / splitSize) : (totalSize/splitSize+1);
System.out.println("split count = " +count);
List<List<T>> rows = new ArrayList();
for (int i = 0;i < count;i ++) {
int index = i * splitSize;
List<T> cols = new ArrayList();
int j = 0;
while (j < splitSize && index < totalSize) {
cols.add(datas.get(index++));
j ++;
}
rows.add(cols);
}
return rows;
}
方式二:
/**
* 拆分集合
* @param datas
* @param splitSize
* @param <T>
* @return
*/
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
if (datas == null || splitSize < 1) {
return null;
}
int totalSize = datas.size();
int count = (totalSize % splitSize == 0) ?
(totalSize / splitSize) : (totalSize/splitSize+1);
List<List<T>> rows = new ArrayList<>();
for (int i = 0; i < count;i++) {
List<T> cols = datas.subList(i * splitSize,
(i == count - 1) ? totalSize : splitSize * (i + 1));
rows.add(cols);
System.out.println(cols);
}
return rows;
}
转载于:https://blog.51cto.com/xuzhiwei/1740417