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

如何遍历Java中的嵌套ArrayList(ArrayList的ArrayList)?

处理嵌套ArrayList的分步指南

嘿,我完全理解你刚从普通数组过渡到ArrayList,尤其是碰到嵌套结构时的困惑——咱们一步步拆解你的需求,每一步都讲得明明白白:

1. 先明确嵌套ArrayList的结构

嵌套ArrayList本质就是外层ArrayList的每个元素本身也是一个ArrayList。对应你提到的场景,咱们先定义好示例数据结构:

import java.util.ArrayList;
import java.util.Arrays;

public class NestedArrayListDemo {
    public static void main(String[] args) {
        // 外层嵌套ArrayList:元素类型是ArrayList<String>
        ArrayList<ArrayList<String>> nestedMovieLists = new ArrayList<>();
        
        // 添加第一个子列表(索引0)
        nestedMovieLists.add(new ArrayList<>(Arrays.asList("Toy Story", "Monsters Inc", "Cars")));
        // 添加你要获取的第二个子列表(索引1)
        nestedMovieLists.add(new ArrayList<>(Arrays.asList("Tangled", "Zooptopia", "Finding Dory")));
        // 可按需添加更多子列表
        nestedMovieLists.add(new ArrayList<>(Arrays.asList("Frozen", "Big Hero 6", "Moana")));

2. 处理用户输入并定位目标子列表

你提到用户输入2后要减1得到索引1,这部分逻辑很直接:

int userInput = 2;
        int targetIndex = userInput - 1; // 转换为0起始的索引,得到1
        
        // 获取索引1对应的子ArrayList,用get()方法(类似数组的[]访问)
        ArrayList<String> targetSubList = nestedMovieLists.get(targetIndex);

3. 遍历子列表并添加到指定容器

接下来遍历这个子列表,把元素存入你的目标容器(比如另一个ArrayList),这里有三种常用方式:

方式1:增强for循环(最简洁,推荐日常使用)

不用关心索引,直接遍历每个元素,是集合遍历的首选方式:

// 定义你的目标容器
        ArrayList<String> targetContainer = new ArrayList<>();
        
        for (String movie : targetSubList) {
            targetContainer.add(movie);
        }

方式2:普通for循环(类似数组遍历,适合需要索引的场景)

如果需要操作元素的位置索引(比如做位置相关的判断),可以用这种方式:

// 清空容器再试另一种方式(可选)
        targetContainer.clear();
        
        for (int i = 0; i < targetSubList.size(); i++) {
            String movie = targetSubList.get(i); // 用get(i)获取对应索引的元素
            targetContainer.add(movie);
        }

方式3:Java 8+ 流操作(函数式写法,更简洁)

如果你的项目用Java 8及以上,流操作能让代码更简洁优雅:

targetContainer.clear();
        targetSubList.stream().forEach(targetContainer::add);

4. 验证结果

最后可以打印目标容器,确认元素是否正确添加:

// 打印结果,应该输出 [Tangled, Zooptopia, Finding Dory]
        System.out.println(targetContainer);
    }
}

关键知识点总结

  • 嵌套ArrayList的类型声明格式是ArrayList<ArrayList<元素类型>>,比如这里的ArrayList<ArrayList<String>>。
  • ArrayList用get(index)方法获取指定位置的元素,和数组的array[index]逻辑一致,但ArrayList是动态扩容的,不像数组长度固定。
  • 遍历ArrayList的方式和数组类似,但增强for循环更适合不需要索引的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:04:38