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

相关推荐
DY009J2 小时前
如何在Ubuntu虚拟机中设置Samba共享,并在Windows宿主机中挂载为网络驱动器
网络·windows·ubuntu
怣疯knight2 小时前
搜狗输入法在vecode中打出的是繁体,在其他软件打出的都是简体的解决办法
windows
humors2212 小时前
服务端开发案例(不定期更新)
java·数据库·后端·mysql·mybatis·excel
百***68042 小时前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
庸子2 小时前
Kubernetes调度器深度解析:从资源分配到亲和性策略的架构师之路
java·算法·云原生·贪心算法·kubernetes·devops
_Jimmy_3 小时前
Nacos的三层缓存是什么
java·缓存
朝新_4 小时前
【实战】动态 SQL + 统一 Result + 登录校验:图书管理系统(下)
xml·java·数据库·sql·mybatis
百***92024 小时前
java进阶1——JVM
java·开发语言·jvm
迦蓝叶4 小时前
RDF 与 RDFS:知识图谱推理的基石
java·人工智能·数据挖掘·知识图谱·语义网·rdf·rdfs