JAVA-ArrayList的相关坑
2024-01-01 06:44:09
ArrayList的asList()方法
- Arrays.asList()方法,本质是调用了Arrays的一个静态内部类,实现了AbstractList接口,这个方法是重写了AbstractList的方法,但是这个asList()大小是固定的,当我们使用add方法时会调用父类AbstractList的add方法,通过代码可以看出,该实现逻辑是直接抛异常
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
- ArrayList的subList()获得的子集合存在以下特点
- subList,获取原集合可以通过索引获取,原则是:左开右闭
List<String> firstList= new ArrayList<>();
firstList.add("1111");
firstList.add("22");
firstList.add("333");
firstList.add("44");
firstList.add("55");
List<String> secondList= bookList.subList(3, 5);
- 修改原集合,会影响到子集合
- 修改原集合结构,会引起ConcurrentModificationException异常-- 即:你给原集合添加一个元素,然后遍历子集合会导致异常
- 修改子集合元素的值,会影响原集合
- 修改子集合的结构,会影响原集合
在subList场景中,对父集合元素的增加或删除,均会导致子列表的遍历、修改、删除产生ConcurrentModificationException异常
- 总结:ArrayList的subList方法,返回的是ArrayList的一个视图,修改父集合会导致子集合修改。修改子集合会导致父集合修改。添加父集合元素会导致子集合报异常。
- Arrays的asList()方法。返回的是一个固定大小的ArrayList,添加元素会报异常
文章来源:https://blog.csdn.net/qq_33322074/article/details/135321056
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!