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

相关推荐
孟陬2 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌2 小时前
一站式了解四种限流算法
java·后端·go
华仔啊3 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝3 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java
Nyarlathotep01134 小时前
SpringBoot Starter的用法以及原理
java·spring boot
wuwen54 小时前
WebFlux + Lettuce Reactive 中 SkyWalking 链路上下文丢失的修复实践
java
SimonKing4 小时前
GitHub 10万星的OpenCode,正在悄悄改变我们的工作流
java·后端·程序员
Seven975 小时前
虚拟线程深度解析:轻量并发编程的未来趋势
java
雨中飘荡的记忆15 小时前
ElasticJob分布式调度从入门到实战
java·后端