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]
相关推荐
时间静止不是简史10 小时前
生产事故排查:Redis 宕机导致补偿队列消费线程死亡,通话录音未上送业务平台
java·redis
2301_322414280413 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
金銀銅鐵15 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
福建佰胜张工15 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop15 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x16 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
驭渊的小故事16 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客17 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn18817 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn18 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc