将一个数组分割成等长的多个数组
public static List<List<String>> ArraySplitByLength(String[] StrArr,
int length) {
// 先声明一个字符串集合
List<String> list = new ArrayList<String>();
// 再声明一个类似二维数组的集合
List<List<String>> okdList = new ArrayList<List<String>>();
// 循环数组把每个数组元素添加到字符串集合中,后面操作的都是这个字符串集合
for (int i = 0; i < StrArr.length; i++) {
list.add(StrArr[i]);
}
// 判断集合长度能否被要分割的长度整除
if (list.size() % length != 0) {
// 根据要分割的长度循环拿到每个数组添加到类似二维数组的集合中
// 因为不能被整除,说明会有多余的数据不能拿到,所以循环次数+1
for (int j = 0; j < list.size() / length + 1; j++) {
// 下面则是根据每次截取的位置以及要截取的长度,判断怎么个截法了
if ((j * length + length) < list.size()) {
okdList.add(list.subList(j * length, j * length + length));
} else if ((j * length + length) > list.size()) {
okdList.add(list.subList(j * length, list.size()));
} else if (list.size() < length) {
okdList.add(list.subList(0, list.size()));
}
}
} else {
// 能被整除直接循环,循环次数就是集合长度/要分割的长度,得到的就是分割后数组的个数
for (int i = 0; i < list.size() / length; i++) {
// 调用集合的subList(int,int)方法截取到每个数组并添加到类似二维数组的集合中
okdList.add(list.subList(i * length, i * length + length));
}
}
return okdList;
}