需求说明
有一个ArrayList,里面的元素很多,需要把这个ArrayList拆分成若干成最大长度是200个元素的子数组。
实现
public static void main(String[] args) { ArrayList<Integer> originalList = new ArrayList<>(); // 添加一些元素到originalList int maxLength = 200; List<List<Integer>> subArrays = splitArrayList(originalList, maxLength); // 打印子数组 for (List<Integer> subArray : subArrays) { System.out.println(subArray); } } public static <T> List<List<T>> splitArrayList(List<T> originalList, int maxLength) { List<List<T>> subArrays = new ArrayList<>(); int fromIndex = 0; int toIndex = Math.min(maxLength, originalList.size()); while (fromIndex < originalList.size()) { subArrays.add(originalList.subList(fromIndex, toIndex)); fromIndex = toIndex; toIndex = Math.min(toIndex + maxLength, originalList.size()); } return subArrays; } }
在这个示例中,我们首先创建了一个originalList,它是包含大量元素的ArrayList。然后,我们定义了maxLength,即子数组的最大长度为200。接下来,我们调用splitArrayList()方法来拆分ArrayList并返回一个包含子数组的List。最后,我们打印每个子数组。
请注意,在splitArrayList()方法中,我们使用subList()方法来获取原始ArrayList的子列表。我们使用fromIndex和toIndex变量来指定子列表的起始索引和结束索引。通过不断递增这些索引,我们可以在循环中获取不同的子列表。
文章评论