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]
相关推荐
吴声子夜歌4 小时前
Java面试——数据结构(一)
java·数据结构·面试
罗超驿4 小时前
SpringBoot 快速入门
java·spring boot·后端
疯狂打码的少年4 小时前
【数据结构】选择类排序:简单选择与堆排序
java·数据结构·笔记·算法
吴声子夜歌4 小时前
Java面试——基础
java·开发语言·面试
智码看视界5 小时前
Day 56:AI辅助开发全面提效:Copilot + Cursor的Java开发
java·单元测试·copilot·cursor·后端开发·代码审查·ai辅助开发
asdfg12589635 小时前
一个例子理解Java中的函数式接口
java·函数式接口
toolsmith5 小时前
一个商业软件的License校验,居然把验签的证书放在了License文件里
java
wuminyu5 小时前
JDK21 FFM异步读取MSG_ZEROCOPY错误队列揭秘
java·linux·c语言·jvm·c++
存在morning5 小时前
【PySpark 学习笔记 三】DataFrame API 入门
android·java·数据库
AC赳赳老秦5 小时前
企业标签体系搭建:基于 OpenClaw 采集的多维度公开数据,构建企业画像标签库
java·运维·服务器·python·信息可视化·deepseek·openclaw