You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:46:28