236. Java 集合 - 使用索引访问 List 元素

文章目录

  • [236. Java 集合 - 使用索引访问 List 元素](#236. Java 集合 - 使用索引访问 List 元素)
  • [🎯 通过索引访问和操作单个元素](#🎯 通过索引访问和操作单个元素)
  • [🔥 示例讲解](#🔥 示例讲解)
  • [🔎 查找元素在 List 中的位置](#🔎 查找元素在 List 中的位置)
  • [🛠️ 获取子列表(`subList`)](#🛠️ 获取子列表(subList))
  • [🚀 在指定位置插入一个集合](#🚀 在指定位置插入一个集合)
  • [📚 小结](#📚 小结)

236. Java 集合 - 使用索引访问 List 元素

List 接口中,除了继承 Collection 的基本功能外,还**新增了一套基于索引(index)**的方法,让我们能更灵活、精准地操作元素。


🎯 通过索引访问和操作单个元素

方法签名 作用
add(int index, E element) 在指定位置插入 元素,后续元素索引自动后移
get(int index) 获取指定索引位置的元素
set(int index, E element) 替换指定索引位置的元素
remove(int index) 移除 指定索引位置的元素,后续元素索引前移

⚠️ 注意:

所有这些方法都要求索引必须是合法的范围0 <= index <= size-1)。

如果索引非法,将抛出 IndexOutOfBoundsException 异常!


🔥 示例讲解

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListAccessExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>(List.of("Alice", "Bob", "Charlie"));

        // 获取元素
        System.out.println("Element at index 1: " + names.get(1)); // Bob

        // 替换元素
        names.set(1, "Barbara");
        System.out.println("After set: " + names); // [Alice, Barbara, Charlie]

        // 插入元素
        names.add(1, "Brian");
        System.out.println("After add: " + names); // [Alice, Brian, Barbara, Charlie]

        // 移除元素
        names.remove(2);
        System.out.println("After remove: " + names); // [Alice, Brian, Charlie]
    }
}

🖨️ 输出

java 复制代码
Element at index 1: Bob
After set: [Alice, Barbara, Charlie]
After add: [Alice, Brian, Barbara, Charlie]
After remove: [Alice, Brian, Charlie]

🔎 查找元素在 List 中的位置

有时我们需要知道某个元素在 List 中的位置索引,可以使用以下方法:

方法签名 作用
indexOf(Object o) 返回元素第一次出现的索引,找不到返回 -1
lastIndexOf(Object o) 返回元素最后一次出现的索引,找不到返回 -1

示例

java 复制代码
List<String> colors = List.of("Red", "Green", "Blue", "Green");

System.out.println(colors.indexOf("Green"));     // 1
System.out.println(colors.lastIndexOf("Green")); // 3
System.out.println(colors.indexOf("Yellow"));    // -1

🛠️ 获取子列表(subList

  • 方法签名:subList(int fromIndex, int toIndex)
  • 返回的是原列表的一个视图(view)不是新复制出来的列表
  • 任何对子列表的修改,都会同步影响到原列表,反之亦然。

⚠️ 注意:

  • fromIndex包含的起点索引
  • toIndex不包含的终点索引
  • 索引非法时,抛出 IndexOutOfBoundsException

示例

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class SubListExample {
    public static void main(String[] args) {
        List<String> numbers = new ArrayList<>(List.of("0", "1", "2", "3", "4", "5"));

        System.out.println("Original list: " + numbers);

        // 清除索引2(含)到索引5(不含)之间的元素,即 "2", "3", "4"
        numbers.subList(2, 5).clear();

        System.out.println("After subList clear: " + numbers);
    }
}

🖨️ 输出

java 复制代码
Original list: [0, 1, 2, 3, 4, 5]
After subList clear: [0, 1, 5]

🚀 在指定位置插入一个集合

有时需要一次性插入多个元素,可以使用:

  • 方法签名:addAll(int index, Collection<? extends E> c)

这个方法会从指定位置开始,依次插入集合中的所有元素!

示例

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class AddAllExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(List.of("A", "B", "F"));

        List<String> newElements = List.of("C", "D", "E");

        list.addAll(2, newElements);

        System.out.println(list); // [A, B, C, D, E, F]
    }
}

📚 小结

操作 方法
按索引访问元素 get(index)
替换元素 set(index, element)
插入元素 add(index, element)
移除元素 remove(index)
批量插入集合 addAll(index, collection)
获取元素位置索引 indexOf(element), lastIndexOf(element)
获取子列表 subList(fromIndex, toIndex)

一句话总结

👉 "List 给了你像数组一样按位置操作元素的能力,同时保留了 Collection 的灵活性!"

相关推荐
小帅学编程13 小时前
设计模式笔记
java
ss27313 小时前
线程池工作机制:从任务提交到执行的完整决策流程
java·开发语言
yaoxin52112313 小时前
276. Java Stream API - 使用 flatMap 和 mapMulti 清理数据并转换类型
java·开发语言·windows
Vic1010113 小时前
【无标题】
java·数据库·分布式
摇滚侠13 小时前
Java 零基础全套视频教程,异常,处理异常,自定义异常,笔记 124-129
java·笔记
Java开发追求者13 小时前
Mysql超详细安装配置教程(保姆级)
windows·mysql
爱吃山竹的大肚肚14 小时前
在Java中,从List A中找出List B没有的数据(即求差集)
开发语言·windows·python
伯明翰java14 小时前
【无标题】springboot项目yml中使用中文注释报错的解决方法
java·spring boot·后端
企微自动化14 小时前
企业微信二次开发:深度解析外部群主动推送的实现路径
java·开发语言·企业微信
_修铁路的14 小时前
【Poi-tl】 Word模板填充导出
java·word·poi-tl