236. Java 集合 - 使用索引访问 List 元素
文章目录
- 236. Java 集合 - 使用索引访问 List 元素
- 🎯 通过索引访问和操作单个元素
- 🔥 示例讲解
- 🔎 查找元素在 List 中的位置
- 示例
- 🛠️ 获取子列表(`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异常!
🔥 示例讲解
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]}
}
🖨️ 输出:
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 |
示例
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
示例
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);}
}
🖨️ 输出:
Original list: [0, 1, 2, 3, 4, 5]
After subList clear: [0, 1, 5]
🚀 在指定位置插入一个集合
有时需要一次性插入多个元素,可以使用:
- 方法签名:
addAll(int index, Collection<? extends E> c)
这个方法会从指定位置开始,依次插入集合中的所有元素!
示例
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 的灵活性!”
