Java 使用 Stream 流将 List 数组每 1000 个元素拆分
要将一个 List 数组每 1000 个元素进行拆分,可以使用 Java 的 Stream 流和 Collectors.toList() 方法来实现。下面是一个示例代码:\n\njava\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.IntStream;\n\npublic class SplitListExample {\n public static void main(String[] args) {\n List<Integer> list = IntStream.rangeClosed(1, 9999)\n .boxed()\n .collect(Collectors.toList());\n\n List<List<Integer>> subLists = splitList(list, 1000);\n\n System.out.println(subLists.size()); // 输出结果为 10\n System.out.println(subLists.get(0).size()); // 输出结果为 1000\n System.out.println(subLists.get(9).size()); // 输出结果为 999\n }\n\n public static <T> List<List<T>> splitList(List<T> list, int batchSize) {\n return IntStream.range(0, (list.size() + batchSize - 1) / batchSize)\n .mapToObj(i -> list.subList(i * batchSize, Math.min((i + 1) * batchSize, list.size())))\n .collect(Collectors.toList());\n }\n}\n\n\n在示例代码中,首先创建一个包含 1 到 9999 的整数的 List。然后使用 splitList 方法将这个 List 按照每 1000 个元素进行拆分。拆分后的结果是一个 List 的 List,每个子 List 包含 1000 个元素,除了最后一个子 List 可能包含少于 1000 个元素。\n\nsplitList 方法使用 IntStream.range 生成一个 0 到 n 的整数流,其中 n 是拆分后的子 List 数量。然后使用 mapToObj 将每个整数映射为对应的子 List。在映射过程中,使用 subList 方法从原始 List 中获取每个子 List 的元素范围。最后,使用 Collectors.toList 将子 List 收集到一个 List 中并返回。\n\n运行示例代码,可以看到成功将 List 数组按照每 1000 个元素进行拆分。
原文地址: https://www.cveoy.top/t/topic/qhpU 著作权归作者所有。请勿转载和采集!