集合相关: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
相关推荐
Advancer-13 分钟前
RedisTemplate 两种序列化实践方案
java·开发语言·redis
java1234_小锋31 分钟前
Java高频面试题:MyBatis如何实现动态数据源切换?
java·开发语言·mybatis
墨神谕40 分钟前
Java中,为什么要将.java文件编译成,class文件,而不是直接将.java编译成机器码
java·开发语言
Nyarlathotep01131 小时前
并行设计模式(3):Future模式
java·后端
流星雨在线1 小时前
汇总:Tomcat 安装与常用配置
java·tomcat
小冷coding1 小时前
【面试】结合项目整理的场景面试题,覆盖 Java 基础、锁、多线程、数据库、分布式锁 / 事务、消息中间件等核心维度
java·数据库·面试
鬼先生_sir1 小时前
SpringCloud-GateWay网关
java·spring cloud·gateway
卓怡学长2 小时前
m319个人网站的设计与实现
java·数据库·spring·tomcat·maven·intellij-idea
Zzj_tju2 小时前
Java 从入门到精通(十二):File 与 IO 流基础,为什么程序“读写文件”时总是容易出问题?
java·python·php
橘子编程2 小时前
操作系统原理:从入门到精通全解析
java·linux·开发语言·windows·计算机网络·面试