将一个数组分割成等长的多个数组

时间:2025-02-14 07:01:30
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; }