List subList 方法
1、基本介绍
- subList 方法用于获取原列表的一个视图,而不是创建一个新的独立列表
List<E> subList(int fromIndex, int toIndex);
| 参数 |
说明 |
| fromIndex |
起始索引(包含) |
| toIndex |
结束索引(不包含) |
2、基本使用
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
List<String> sub = list.subList(1, 4);
System.out.println(sub);
# 输出结果
[B, C, D]
3、核心特性
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(list);
List<String> sub = list.subList(1, 4);
sub.set(0, "X");
System.out.println(list);
sub.add("F");
System.out.println(list);
# 输出结果
[A, B, C, D, E]
[A, X, C, D, E]
[A, X, C, D, F, E]
4、注意事项
- 对原列表进行了结构性修改(增加或删除元素,不包括修改元素值),那么子列表会变得不可用
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
List<String> sub = list.subList(1, 4);
list.set(1, "BB");
try {
System.out.println(sub.get(0));
} catch (Exception e) {
e.printStackTrace();
}
list.add("F");
try {
System.out.println(sub.get(0));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println(sub.size());
} catch (Exception e) {
e.printStackTrace();
}
# 输出结果
BB
java.util.ConcurrentModificationException
...
java.util.ConcurrentModificationException
...
5、实例实操
- 在原 List 上操作(不创建新对象)只保留前 5 个元素
List<String> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add("元素" + i);
}
System.out.println("原列表: " + list);
if (list.size() > 5) {
list.subList(5, list.size()).clear();
}
System.out.println("截取后: " + list);
# 输出结果
原列表: [元素1, 元素2, 元素3, 元素4, 元素5, 元素6, 元素7, 元素8, 元素9, 元素10]
截取后: [元素1, 元素2, 元素3, 元素4, 元素5]