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]
相关推荐
暮雨哀尘14 分钟前
Java 基础练习(一):创建类并调用对象
java·开发语言
想要入门的程序猿30 分钟前
回调函数学习
java·网络·学习
泡海椒41 分钟前
动态代理核心原理:JQuick-Java接口规则自动生成机制解析
java·开发语言·python
TechExplorer3651 小时前
Windows 隐藏导航窗格【主文件夹】、【图库】、【OneDrive】
windows·onedrive
步行cgn1 小时前
Spring 启动报错:BeanFactory not initialized 的原因与解决
java·python·spring
步行cgn1 小时前
Spring 报错:No bean class specified on bean definition 的原因与解决
java·后端·spring
我一定会有钱1 小时前
官网谷歌浏览器离线安装包一键下载
windows
zhangjw342 小时前
第47篇:Java综合实战:电商秒杀系统(高并发场景)
java·开发语言
土司大王2 小时前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
Wang's Blog2 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring