集合相关: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
相关推荐
大飞哥~BigFei8 分钟前
RabbitMq消费消息遇到的坑
java·rabbitmq·java-rabbitmq
隐形喷火龙19 分钟前
Springboot集成OnlyOffice
java·spring boot·后端
5pace22 分钟前
【SSM|第一篇】MyBatisPlus
java·spring boot·后端·mybatis
JosieBook37 分钟前
【SpringBoot】37 核心功能 - 高级特性- Spring Boot 中的 自定义 Starter 完整教程
java·spring boot·后端
小二·1 小时前
Elasticsearch 面试题精编(26题|含答案|分类整理)
java·大数据·elasticsearch
BD_Marathon1 小时前
在 Linux 环境中配置 Eclipse 以开发 Hadoop 应用
java·hadoop·eclipse
草莓熊Lotso1 小时前
C++ 二叉搜索树(BST)完全指南:从概念原理、核心操作到底层实现
java·运维·开发语言·c++·人工智能·经验分享·c++进阶
oliveira-time1 小时前
单例模式中的饿汉式
java·开发语言
凌波粒1 小时前
SpringMVC基础教程(1)--MVC/DispathcerServlet
java·spring·mvc