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

Java初学者求助:如何从方法中返回多个ArrayList?

嘿,我完全懂你现在的卡点!作为Java新手,刚接触集合拆分和方法返回值的时候,确实容易摸不清头绪。我来给你拆解一下怎么解决这个问题,分步骤来~

首先,先理清楚核心逻辑:把输入的元素按索引奇偶拆分到两个ArrayList,然后让其他方法能拿到这两个集合对吧?Java里方法没法直接返回两个独立的集合,所以我们有几种实用的方案,我给你一一演示:

方案1:自定义一个结果类(最推荐,语义清晰)

这种方式最规范,后续维护代码的时候一眼就能看懂返回的是什么。

首先,我们先写一个简单的类,用来封装我们要返回的两个集合:

// 这个类专门用来装拆分后的两个集合,名字可以根据你的业务调整,比如叫SplitResult或者InputSplit
class SplitResult {
    // 对应偶数索引的元素集合(radie/nominator)
    private ArrayList<Integer> evenElements;
    // 对应奇数索引的元素集合(height/denominator)
    private ArrayList<Integer> oddElements;

    // 构造方法,初始化两个集合
    public SplitResult(ArrayList<Integer> evenElements, ArrayList<Integer> oddElements) {
        this.evenElements = evenElements;
        this.oddElements = oddElements;
    }

    // Getter方法,让其他方法能获取到里面的集合
    public ArrayList<Integer> getEvenElements() {
        return evenElements;
    }

    public ArrayList<Integer> getOddElements() {
        return oddElements;
    }
}

然后写你的拆分方法,返回这个自定义类:

// 假设用户输入的是一个List<Integer>,你也可以根据实际情况改成数组输入
public SplitResult splitInput(List<Integer> inputList) {
    ArrayList<Integer> radie = new ArrayList<>();
    ArrayList<Integer> height = new ArrayList<>();

    // 遍历输入列表,按索引奇偶拆分
    for (int i = 0; i < inputList.size(); i++) {
        if (i % 2 == 0) {
            // 偶数索引(Java索引从0开始,第一个元素索引是0哦)
            radie.add(inputList.get(i));
        } else {
            // 奇数索引
            height.add(inputList.get(i));
        }
    }

    // 返回封装好的结果对象
    return new SplitResult(radie, height);
}

接下来,其他方法要调用的时候就很简单了:

// 假设你已经拿到了用户输入的inputList(比如通过Scanner读取的)
SplitResult result = splitInput(inputList);

// 获取拆分后的两个集合,后续处理nominator和denominator逻辑完全一样
ArrayList<Integer> radie = result.getEvenElements();
ArrayList<Integer> height = result.getOddElements();

// 举个后续方法的例子,比如处理nominator和denominator
public void processFractions(SplitResult fractionParts) {
    ArrayList<Integer> nominator = fractionParts.getEvenElements();
    ArrayList<Integer> denominator = fractionParts.getOddElements();
    // 这里写你的业务逻辑
}
方案2:返回嵌套List(快速实现,不用额外写类)

如果只是快速测试不想写自定义类,也可以把两个ArrayList放到一个大的List里返回:

public List<List<Integer>> splitInput(List<Integer> inputList) {
    ArrayList<Integer> radie = new ArrayList<>();
    ArrayList<Integer> height = new ArrayList<>();

    for (int i = 0; i < inputList.size(); i++) {
        if (i % 2 == 0) {
            radie.add(inputList.get(i));
        } else {
            height.add(inputList.get(i));
        }
    }

    List<List<Integer>> result = new ArrayList<>();
    result.add(radie); // 第一个元素是偶数索引集合
    result.add(height); // 第二个元素是奇数索引集合
    return result;
}

调用的时候:

List<List<Integer>> result = splitInput(inputList);
ArrayList<Integer> radie = (ArrayList<Integer>) result.get(0);
ArrayList<Integer> height = (ArrayList<Integer>) result.get(1);

不过这种方式的缺点是语义不够明确,别人看代码的时候需要记住哪个位置对应哪个集合,所以长期来看还是方案1更靠谱。

最后提醒你一下:Java的索引是从0开始的,如果你需求里的“偶数索引”是从1开始计数的(比如第一个输入值算索引1),那判断条件要改成(i + 1) % 2 == 0哦,别搞混了!

内容的提问来源于stack exchange,提问作者Erik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:49:33