第一种和第二种:
/**
* 第一种方法:
* 将list拆分成多给指定的大小的list
*/
public static List<List<String>> subList(List<String> target, int size) {
List<List<String>> listArr = new ArrayList<>();
//获取被拆分的数组个数
int arrSize = target.size() % size == 0 ? target.size() / size : target.size() / size + 1;
for (int i = 0; i < arrSize; i++) {
List<String> sub = new ArrayList<>();
//把指定索引数据放入到list中
for (int j = i * size; j <= size * (i + 1) - 1; j++) {
if (j <= target.size() - 1) {
sub.add(target.get(j));
}
}
listArr.add(sub);
}
return listArr;
}
/**
* 第二种方法
* 将list拆分成多给指定的大小的list
*/
public static List<List<String>> subList2(List<String> target, int num) {
List<List<String>> listArr = new ArrayList<>();
//获取被拆分的数组个数
if (target.size() > num) {
int number = target.size() / num;
for (int i = 1; i <= number; i++) {
List<String> subList = target.subList(num * (i - 1), num * i);
listArr.add(subList);
}
List<String> subList = target.subList(num * number, target.size());
listArr.add(subList);
}
return listArr;
}
同事写的更简洁一些,第三种:
public static List<List<String>> TrackSubpackage(List<String> objects, int everySize) {
List<List<String>> packageList = new ArrayList<>();
List<String> packages = new ArrayList<>();
for (int i = 0; i < objects.size(); i++) {
packages.add(objects.get(i));
if (packages.size() == everySize || i == objects.size() - 1) {
List<String> isp = new ArrayList<>();
isp.addAll(packages);
packageList.add(isp);
packages.clear();
}
}
return packageList;
}
所有方法,第一个参数:原始集合,第二个参数:多少个元素分一个集合。