集合相关:asList()和subList()方法的作用?

1.asList()方法

Arrays.asList(T... a)返回一个固定大小的列表,这个返回的列表的底层实现是一个final修饰的数组,其引用关系不能发生变化,并且它的大小也是固定的,可以修改和读取里面的元素值,但是不能添加或删除元素。否则会报UnsupportedOperationException异常。

2.subList()

List<Integer> list = new ArrayList<>(),先创建一个列表,List接口中的subList()方法用于获取当前列表的一个子列表 ,提取的这个子列表包含了从指定的起始位置(包含)到结束位置(不包含)之间的所有元素,子列表可以做增、删、改操作,相对的原列表中的那部分值,也会跟着变化,原列表也可以做修改操作,数据会同步变动,但是如果原列表做了新增和删除操作时,再次访问子列表时会报并发修改异常。subList()方法在对列表进行分割和部分操作时可以被用到。

java 复制代码
List<Integer> list = new ArrayList<>();
list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);
List<Integer> view = list.subList(1, 4);
System.out.println(view+"/"+list); //[2, 3, 4]/[1, 2, 3, 4, 5]
view.add(6666);
System.out.println(view+"/"+list); //[2, 3, 4, 6666]/[1, 2, 3, 4, 6666, 5]
view.remove(2);
System.out.println(view+"/"+list); //[2, 3, 6666]/[1, 2, 3, 6666, 5]
view.set(0,999);
System.out.println(view+"/"+list);//[999, 3, 6666]/[1, 999, 3, 6666, 5]
System.out.println("=======================");
//list.remove(0);  
// System.out.println(view+"/"+list); 访问view报错,ConcurrentModificationException
list.set(0,8888);
System.out.println(view+"/"+list); //[999, 3, 6666]/[8888, 999, 3, 6666, 5]
list.set(2,123);
System.out.println(view+"/"+list);// [999, 123, 6666]/[8888, 999, 123, 6666, 5]
//list.add(0,4444);
//System.out.println(view+"/"+list); 访问view报错,ConcurrentModificationException
相关推荐
南极企鹅15 分钟前
springBoot项目有几个端口
java·spring boot·后端
清风拂山岗 明月照大江21 分钟前
Redis笔记汇总
java·redis·缓存
xiaoxue..36 分钟前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
忧郁的Mr.Li1 小时前
SpringBoot中实现多数据源配置
java·spring boot·后端
yq1982043011561 小时前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端
一个public的class1 小时前
你在浏览器输入一个网址,到底发生了什么?
java·开发语言·javascript
有位神秘人1 小时前
kotlin与Java中的单例模式总结
java·单例模式·kotlin
golang学习记1 小时前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
爬山算法1 小时前
Hibernate(89)如何在压力测试中使用Hibernate?
java·压力测试·hibernate
消失的旧时光-19432 小时前
第十四课:Redis 在后端到底扮演什么角色?——缓存模型全景图
java·redis·缓存