Java 开发 - List subList 方法

List subList 方法

1、基本介绍
  • subList 方法用于获取原列表的一个视图,而不是创建一个新的独立列表
java 复制代码
List<E> subList(int fromIndex, int toIndex);
参数 说明
fromIndex 起始索引(包含)
toIndex 结束索引(不包含)
2、基本使用
java 复制代码
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、核心特性
  • 对子列表的修改(增删改)会直接影响原列表
java 复制代码
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、注意事项
  • 对原列表进行了结构性修改(增加或删除元素,不包括修改元素值),那么子列表会变得不可用
java 复制代码
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 个元素
java 复制代码
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]
相关推荐
Flynn Liang9 小时前
RAG 评估体系:黄金集、检索指标与 LLM-as-Judge 落地
java·langchain·rag·评估·langchain4j·检索指标
SimonKing10 小时前
Workbuddy太占C盘空间了,写个迁移工具迁走10G的数据
java·后端·程序员
Hvitur11 小时前
Java - Lambda
java·开发语言·python
apcipot_rain16 小时前
C++转Java日记(06)
java·开发语言
金銀銅鐵20 小时前
带您看懂字节码指令(一):一帧里有什么
java·后端·ai编程
nice_lcj5201 天前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
学长毕设1 天前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
聪明的笨猪猪1 天前
Java 工程案例:AI 生成 @Async 异步线程池踩坑
java·经验分享·面试·ai编程
学长毕设1 天前
基于SpringBoot公务员考试交流平台-附源码
java·spring boot·后端
SL_staff1 天前
私有化低代码:面向强监管行业的可控数字化实践
java·低代码