集合相关: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
相关推荐
咸鱼2.02 小时前
【java入门到放弃】跨域
java·开发语言
indexsunny2 小时前
互联网大厂Java求职面试实战:微服务与Spring生态全攻略
java·数据库·spring boot·安全·微服务·面试·消息队列
沐苏瑶2 小时前
Java 搜索型数据结构全解:二叉搜索树、Map/Set 体系与哈希表
java·数据结构·算法
冬夜戏雪3 小时前
实习面经记录(十)
java·前端·javascript
skiy3 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
平生不喜凡桃李3 小时前
浅谈 Linux 中 namespace 相关系统调用
java·linux·服务器
zb200641203 小时前
CVE-2024-38819:Spring 框架路径遍历 PoC 漏洞复现
java·后端·spring
2401_895521343 小时前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
何仙鸟4 小时前
GarmageSet下载和处理
java·开发语言
wefly20174 小时前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换