Arrays.asList、ArrayList.subList使用规范

简介: Arrays.asList、ArrayList.subList使用规范

Arrays.asList、ArrayList.subList使用规范

1、使用Arrays.asList的注意事项

使用Arrays.asList()把数组转换为集合时,不能使用其修改集合相关的方法,如add/remove/clear等,均会抛出UnsupportedOperationException异常。


因为asList返回的对象不是我们常用的java.util包下的ArrayList,而是Arrays的内部类,虽然它们都继承自AbstractList,但是后者并没有实现其中跟修改集合相关的方法。Arrays.asList()体现的是适配器模式,只是转换接口,后台的数据仍是数组。


当数组的某个元素被修改时,list中的值也会随之改变。


总而言之Arrays.asList方法一般用在一些简单的场合使用,比如快速声明一个集合,判断某个值是否在允许的范围内等,而不应该用于创建后还需修改的情景。


2、使用ArrayList的subList的注意事项

  • 修改原集合元素的值,会影响子集合
  • 修改原集合的结构,会引起ConcurrentModificationException异常
  • 修改子集合元素的值,会影响原集合
  • 修改子集合的结构,会影响原集合

subList()结果不可以强制转成ArrayList,否则会抛出ClassCastException异常。因为subList返回的SubList是ArrayList的内部类,并不是ArrayList而是ArrayList的一个视图(在SubList的构造函数中并没有创建一个新的ArrayList),对SubList子列表的所有操作最终会反映到原列表上。


在subList场景中,高度注意对父集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生ConcurrentModificationException异常(异常并不是在添加或删除元素时发生的,而是在子集合操作时发生的)


相关文章
|
7月前
|
Java API Apache
Arrays.asList():使用指南
Arrays.asList() 是一个 Java 的静态方法,它可以把一个数组或者多个参数转换成一个 List 集合。这个方法可以作为数组和集合之间的桥梁,方便我们使用集合的一些方法和特性。本文将给大家介绍 Arrays.asList() 的语法、应用场景、坑点和总结。
92 0
|
7月前
Arrays.asList的坑
Arrays.asList的坑
33 0
|
7月前
|
Java C++
List.of() Vs Arrays.asList()
在上面的示例中,List.of() 用于创建不可变的颜色列表。任何通过添加或删除元素来修改列表的尝试都将导致抛出异常。 Arrays.asList() 当我们想要由指定数组支持的固定大小(可序列化)集合时,请使用此方法。对返回集合的任何更改也将写入原始数组。 java
39 0
|
8月前
|
Java
Arrays.asList()方法 讲解
Arrays.asList()方法 讲解
33 0
|
9月前
|
Java 编译器 索引
深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括`System.arraycopy()`、`Arrays.copyOf()`和`Arrays.copyOfRange()`。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探讨这些方法,以便您了解何时使用它们以及如何正确使用它们。
282 1
|
8月前
|
Java 索引
CTO:在项目中使用Arrays.asList、ArrayList.subList,就立马滚
1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用:
Arrays.asList、ArrayList.subList使用规范
Arrays.asList、ArrayList.subList使用规范 1、使用Arrays.asList的注意事项
|
Java
Java开发规范01 - 集合篇_Arrays.asList 坑
Java开发规范01 - 集合篇_Arrays.asList 坑
101 0
|
Java C++ 索引
Arrays.asList() vs Collections.singletonList()
看了 IDEA 的告警: 与 Collections.singletonList 比,使用 Arrays.asList 来生成一个list是否更有优势?后者还能使得返回的list不可变。
116 0
|
Java API
Arrays.asList注意事项
Arrays.asList注意事项