news 2026/6/10 17:35:11

java list.addAll介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java list.addAll介绍

java.util.List接口的addAll()方法用于将一个集合的所有元素添加到列表中。这个方法有两个重载版本:

1. 方法签名

// 版本1:添加到列表末尾 boolean addAll(Collection<? extends E> c) // 版本2:插入到指定位置 boolean addAll(int index, Collection<? extends E> c)

2. 参数说明

  • c: 要添加的集合,其中的元素类型必须与列表元素类型兼容

  • index(仅版本2):插入位置的索引(从0开始)

3. 返回值

  • 如果列表因调用而改变,返回true

  • 否则返回false

4. 基本用法示例

示例1:添加到末尾

List<String> list1 = new ArrayList<>(Arrays.asList("A", "B", "C")); List<String> list2 = new ArrayList<>(Arrays.asList("D", "E", "F")); // 将list2的所有元素添加到list1末尾 list1.addAll(list2); // 结果: ["A", "B", "C", "D", "E", "F"]

示例2:插入到指定位置

List<String> list1 = new ArrayList<>(Arrays.asList("A", "D")); List<String> list2 = new ArrayList<>(Arrays.asList("B", "C")); // 在索引1处插入list2的元素 list1.addAll(1, list2); // 结果: ["A", "B", "C", "D"]

5. 实际应用场景

场景1:合并多个列表

List<Integer> result = new ArrayList<>(); List<Integer> part1 = Arrays.asList(1, 2, 3); List<Integer> part2 = Arrays.asList(4, 5, 6); List<Integer> part3 = Arrays.asList(7, 8, 9); result.addAll(part1); result.addAll(part2); result.addAll(part3); // result: [1, 2, 3, 4, 5, 6, 7, 8, 9]

场景2:批量添加初始化数据

List<String> tasks = new ArrayList<>(); tasks.add("Task 1"); tasks.addAll(Arrays.asList("Task 2", "Task 3", "Task 4"));

场景3:列表插入操作

List<String> schedule = new ArrayList<>(Arrays.asList("Morning", "Evening")); List<String> afternoonTasks = Arrays.asList("Lunch", "Meeting"); // 在"Morning"后面插入下午的安排 schedule.addAll(1, afternoonTasks); // 结果: ["Morning", "Lunch", "Meeting", "Evening"]

6. 注意事项

1.集合为null时

List<String> list = new ArrayList<>(); list.addAll(null); // 抛出 NullPointerException

2.索引越界

List<String> list = new ArrayList<>(Arrays.asList("A", "B")); list.addAll(5, Arrays.asList("C", "D")); // 抛出 IndexOutOfBoundsException

3.修改被添加的集合

List<String> source = new ArrayList<>(Arrays.asList("A", "B", "C")); List<String> target = new ArrayList<>(); target.addAll(source); source.add("D"); // 不影响target System.out.println(target); // 输出: [A, B, C]

4.添加自身

List<String> list = new ArrayList<>(Arrays.asList("A", "B")); list.addAll(list); // 会导致无限循环,抛出 StackOverflowError

7. 与单个add()比较

特性

addAll()

循环使用add()

代码简洁性

性能

通常更优

次优

可读性

// 使用 addAll() - 推荐 list1.addAll(list2); // 使用循环 add() - 不推荐 for (String item : list2) { list1.add(item); }

8. 与Java 8+ Stream结合

// 使用Stream合并多个列表 List<Integer> merged = Stream.of(list1, list2, list3) .flatMap(List::stream) .collect(Collectors.toList());

总结

addAll()是Java集合框架中一个非常实用的方法,它:

  • 提供批量添加元素的功能

  • 支持在指定位置插入集合

  • 比循环添加更简洁高效

  • 广泛应用于列表合并、批量初始化等场景

使用时需要注意处理null值和索引边界情况,避免常见的运行时异常。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:04:33

GeoJSON.io 快速上手完整指南:零基础掌握地理数据编辑

GeoJSON.io 快速上手完整指南&#xff1a;零基础掌握地理数据编辑 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io GeoJSON.io 是一款基于浏览器的免费地理…

作者头像 李华
网站建设 2026/6/9 22:47:37

Vue3-Treeselect树形选择器完整使用指南

Vue3-Treeselect树形选择器完整使用指南 【免费下载链接】vue3-treeselect tree select component for vue 3 (next) 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-treeselect 在现代Web应用开发中&#xff0c;处理层级数据结构的需求日益增多。Vue3-Treeselect作…

作者头像 李华
网站建设 2026/6/10 14:32:31

Windows热键冲突排查终极指南:快速定位进程占用的专业方案

Windows热键冲突排查终极指南&#xff1a;快速定位进程占用的专业方案 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你精心设计的应用程序全…

作者头像 李华
网站建设 2026/6/10 12:58:51

OptiScaler深度解析:如何在DLSS游戏中解锁XeSS与FSR超分辨率技术

核心价值&#xff1a;为什么你需要这款免费画质增强神器 【免费下载链接】CyberXeSS XeSS replacement for DLSS games 项目地址: https://gitcode.com/gh_mirrors/cy/CyberXeSS OptiScaler作为一款革命性的开源中间件&#xff0c;专为解决现代游戏玩家的核心痛点而生。…

作者头像 李华
网站建设 2026/6/10 12:59:25

告别标注噩梦:用LabelLLM开源数据标注平台重塑你的AI工作流

还在为数据标注的繁琐流程而头疼吗&#xff1f;LabelLLM作为一款功能强大的开源数据标注平台&#xff0c;正在彻底改变传统标注工作的方式。无论你是个人开发者还是团队负责人&#xff0c;这个工具都能让你体验到前所未有的标注效率。 【免费下载链接】LabelLLM 项目地址: h…

作者头像 李华
网站建设 2026/6/10 14:36:34

告别繁琐操作:VLC点击暂停插件让你一键掌控视频播放

告别繁琐操作&#xff1a;VLC点击暂停插件让你一键掌控视频播放 【免费下载链接】vlc-pause-click-plugin Plugin for VLC that pauses/plays video on mouse click 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-pause-click-plugin 还在为每次暂停视频都要费力寻找…

作者头像 李华