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 的灵活性!"

相关推荐
齐 飞7 小时前
idea中git误操作撤回git reset --hard ‘HEAD@{1}‘
java·git·intellij-idea
你的保护色7 小时前
多AS互联BGP4综合实验设计
java
某不知名網友7 小时前
ROS2进阶:服务通信、自定义SRV接口、参数服务器与基于服务的参数通信详解
java·开发语言·microsoft
Wang's Blog7 小时前
Java 项目实战: 交友项目 - MongoDB 入门:体系结构和命令行操作
java·mongodb·交友
小溪学编程7 小时前
将 Bean 放入 Spring 容器中的方式有哪些?
java·后端·spring
java_nnnn7 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
用户3721574261357 小时前
Java 读取、修改和清空 PDF 文档属性(元数据)
java
SL_staff7 小时前
从‘改一行代码等三天’到‘改完即生效’:实施工程师的逻辑引擎避坑手记
java·产品·全栈
小羊没烦恼!8 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
hhwyqwqhhwy8 小时前
设备树之 provider 和 consumer
java·linux·前端