Java从整数行提取元素并拆分至多个ArrayList的实现求助
嘿,我来帮你解决这个列表分组的问题!你的需求很明确——把9个整数按每3个一组拆分到三个ArrayList里,我给你几种实用方案,从简单固定场景到灵活通用场景都覆盖到~
方案1:针对固定数据的直接实现
适合你这种元素数量固定的情况,用subList方法快速截取指定范围的元素,代码简洁直观:
import java.util.ArrayList; import java.util.List; public class SplitListExample { public static void main(String[] args) { // 先把所有目标整数放进一个源列表 List<Integer> sourceList = new ArrayList<>(); sourceList.add(10); sourceList.add(30); sourceList.add(15); sourceList.add(89); sourceList.add(1); sourceList.add(3); sourceList.add(65); sourceList.add(48); sourceList.add(12); // 初始化你需要的三个列表 ArrayList<Integer> list1 = new ArrayList<>(); ArrayList<Integer> list2 = new ArrayList<>(); ArrayList<Integer> list3 = new ArrayList<>(); // 用subList截取元素(左闭右开规则,比如subList(0,3)取索引0-2的元素) list1.addAll(sourceList.subList(0, 3)); list2.addAll(sourceList.subList(3, 6)); list3.addAll(sourceList.subList(6, 9)); // 验证结果 System.out.println("list1: " + list1); System.out.println("list2: " + list2); System.out.println("list3: " + list3); } }
运行后输出完全符合你的预期:
list1: [10, 30, 15] list2: [89, 1, 3] list3: [65, 48, 12]
方案2:结合Scanner输入的版本
如果你的整数是需要从控制台输入的,而不是写死在代码里,可以用这个版本:
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class SplitListWithScanner { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Integer> sourceList = new ArrayList<>(); System.out.println("请输入9个整数,用空格分隔:"); // 读取输入内容并转成整数列表 String[] inputNumbers = sc.nextLine().split(" "); for (String numStr : inputNumbers) { sourceList.add(Integer.parseInt(numStr)); } // 直接用subList初始化列表,更简洁 ArrayList<Integer> list1 = new ArrayList<>(sourceList.subList(0, 3)); ArrayList<Integer> list2 = new ArrayList<>(sourceList.subList(3, 6)); ArrayList<Integer> list3 = new ArrayList<>(sourceList.subList(6, 9)); // 输出结果 System.out.println("list1: " + list1); System.out.println("list2: " + list2); System.out.println("list3: " + list3); sc.close(); } }
方案3:通用分组方法(适配任意元素数量)
如果以后你的元素数量可能变化(比如不是固定9个),可以写一个通用方法,不管多少元素都能按指定大小自动分组:
import java.util.ArrayList; import java.util.List; public class GenericSplitList { public static void main(String[] args) { List<Integer> sourceList = new ArrayList<>(); sourceList.add(10); sourceList.add(30); sourceList.add(15); sourceList.add(89); sourceList.add(1); sourceList.add(3); sourceList.add(65); sourceList.add(48); sourceList.add(12); // 调用通用分组方法,每3个一组 List<List<Integer>> groups = splitIntoGroups(sourceList, 3); // 把分组结果赋值给目标列表 ArrayList<Integer> list1 = (ArrayList<Integer>) groups.get(0); ArrayList<Integer> list2 = (ArrayList<Integer>) groups.get(1); ArrayList<Integer> list3 = (ArrayList<Integer>) groups.get(2); // 输出验证 System.out.println("list1: " + list1); System.out.println("list2: " + list2); System.out.println("list3: " + list3); } // 通用分组方法:参数为源列表和每组元素数量 public static List<List<Integer>> splitIntoGroups(List<Integer> source, int groupSize) { List<List<Integer>> groups = new ArrayList<>(); // 循环遍历,每次跳过groupSize个元素 for (int i = 0; i < source.size(); i += groupSize) { // 计算结束索引,防止超出列表长度 int endIndex = Math.min(i + groupSize, source.size()); groups.add(new ArrayList<>(source.subList(i, endIndex))); } return groups; } }
这个方法的优势是灵活性极强,哪怕你有10个元素,它也会自动分成前两组3个、最后一组4个的结构~
内容的提问来源于stack exchange,提问作者Pedro Martins
相关产品推荐
相关产品推荐

