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

相关推荐
郑州光合科技余经理1 小时前
同城系统海外版:一站式多语种O2O系统源码
java·开发语言·git·mysql·uni-app·go·phpstorm
一只乔哇噻1 小时前
java后端工程师+AI大模型开发进修ing(研一版‖day60)
java·开发语言·人工智能·学习·语言模型
Dolphin_Home1 小时前
笔记:SpringBoot静态类调用Bean的2种方案(小白友好版)
java·spring boot·笔记
MetaverseMan2 小时前
Java虚拟线程实战
java
浪潮IT馆2 小时前
Tomcat运行war包的问题分析与解决步骤
java·tomcat
悟能不能悟2 小时前
Caused by: java.sql.SQLException: ORA-28000: the account is locked怎么处理
java·开发语言
_院长大人_3 小时前
MyBatis Plus 分批查询优化实战:优雅地解决 IN 参数过多问题(实操)
java·mybatis
C雨后彩虹3 小时前
机器人活动区域
java·数据结构·算法·华为·面试
a3158238064 小时前
Android Framework开发知识点整理
android·java·linux·服务器·framework·android源码开发