将数组转成List问题,通常我们习惯这样写成:List<String> list = Arrays.asList("1","2");
于是我们这样就得到了一个list,但是这个List的实现类是java.util.Arrays.ArrayList这个类(而不是java.util.ArrayList)。
剖析JDK源代码可以发现,java.util.Arrays.ArrayList(就是转换出来list)它是继承了java.util.AbstractList这个类。
再来看看java.util.AbstractList类是啥样子的?可以发现
public E set(int index, E element)
public E set(int index, E element)
public E remove(int index)
public void add(int index, E element) | public boolean add(E e)调用add(int index, E element)
以上方法的实现全部是抛出UnsupportedOperationException异常。
因此有Arrays.asList转换出来的List他其实是一个AbstractList,他可以像List一样访问,但是不可其做任何修改操作。
这也说明了,为什么Arrays.asList出来的List,对其做add、remove操作为抛出UnsupportedOperationException异常,从JDK代码角度上,原因在此。
换句话说,其实java.util.Arrays.ArrayList其实只是对数组做了一个装饰,可以看到里面的实现,E get(int index)、E set(int index, E element)等方法都是对数组的操作,他的目的只是提供了可以像访问List那样来访问数组而已。本质上其实还是一个数组。
// 自己做个简单的例子
public class Te {
public static void main(String[] args){
String[] in={"4","2","4","5","7"};
List isn=Arrays.asList(in);
// 修改操作
isn.set(1, "9");
for(int i=0;i<isn.size();i++){
System.out.println(isn.get(i));
}
}
}
相关推荐
`Arrays.asList`方法是Java中一个非常实用的工具,它允许我们将数组转换为`List`对象,以便在处理数组时可以利用`List`接口提供的便利。然而,这个方法有一些特殊的特性和限制,需要我们理解清楚才能正确使用。下面...
Java中使用Arrays.asList初始化ArrayList实例方法 在 Java 中,使用 Arrays.asList 方法可以快速创建一个 List 集合,但是需要注意的是,这个方法返回的 ArrayList 并不是 java.util.ArrayList 对象,而是一个内部...
asList.add("4"); // 会抛出UnsupportedOperationException异常 ``` 但是,asList的set方法可以正常调用,例如: ```java String[] strs = {"1","2","3"}; List<String> asList = Arrays.asList(strs); asList.set...
Java中Arrays.asList()方法详解及实例 Arrays.asList()方法是Java中一个常用的方法,它将数组转换为列表。该方法的签名为`public static <T> List<T> asList(T... a)`,它可以接受变长参数,通常情况下是一个数组...
在Java编程中,Arrays.asList()方法和ArrayList是两种不同的方式来处理列表数据,它们之间存在显著的区别。这篇文章将深入探讨这两个概念以及它们在实际使用中的差异。 首先,Arrays.asList()是一个Java内置方法,...
在Java编程中,`Arrays.asList()`方法是一个非常实用的工具,它允许我们将数组转换成一个`List`对象。这个方法在处理数组与集合之间的转换时,提供了很大的便利。下面我们将深入探讨`Arrays.asList()`方法的使用细节...
Arrays.asList、ArrayList的subList坑
Java中的`Arrays.asList()`方法是Java集合框架的一部分,它允许我们将数组或变长参数转换为一个固定大小的`List`对象。这个方法在处理数组与集合之间的转换时非常有用,尤其是当你需要使用集合API操作数组时。下面...
而一开始asList()的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用as
temp.addAll(Arrays.asList(lowercase)); } else if (type == TYPE.CAPITAL) { temp.addAll(Arrays.asList(capital)); } else if (type == TYPE.NUMBER) { temp.addAll(Arrays.asList(number)); } else if ...
当我们在实际业务开发过程中,难免会遇到数组转List的操作,通常我们所选择的就是上面的Arrays.asList进行操作,但是,对的但是来了,我们在使用的时候会发现基本数据类型的参数转化的结果会和我们想要的结果完全不...
在本例中,由于使用了`Arrays.asList()`创建列表,因此实际的子类是`ArrayList`。`ArrayList`的`sort()`方法最终会调用`Arrays.sort()`。 `Arrays.sort()`的实现相当复杂,它采用了混合排序算法——TimSort。...
这里我们使用了Arrays.asList()方法来创建一个不可变的List集合,并将其初始化为七个Person对象。 Arrays.asList() vs List.of() 需要注意的是,Arrays.asList()和List.of()都是用于创建List集合的方法,但是它们...
在Java中,我们可以将数组转换为List对象,利用`Arrays.asList()`方法即可实现。例如: ```java String[] animals = {"Tiger", "Lion", "Cat", "Dog", "Deer", "Chicken", "Sheep", "Horse", "Rabbit", "Snake"};...
通过`Arrays.asList(strArray)`可以直接将数组转换为List,但需要注意的是,这种方式生成的List是固定大小的,不支持添加(add)和删除(remove)操作。这是因为这个List实际上是`java.util.Arrays`类中的一个内部...
List 可以使用 toArray() 方法转换为 Array,Array 可以使用 Arrays.asList() 方法转换为 List,由于 Arrays.asList() 方法返回的是固定的 List,可以使用 new ArrayList(Arrays.asList(array)) 方法来创建一个可扩...
要将一个基本类型的数组转换为`ArrayList`,我们可以使用`Arrays.asList()`方法,然后通过`ArrayList`的构造函数创建一个新的实例。以下是一个例子: ```java int[] intArray = {1, 2, 3, 4, 5}; List<Integer> int...
Set<Integer> set1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5)); Set<Integer> set2 = new HashSet(Arrays.asList(4, 5, 6, 7, 8)); set1.retainAll(set2); System.out.println(set1); // 输出 [4, 5] ``` 2. **...
可以使用toArray()方法将List转换为Array,也可以使用Arrays.asList()方法将Array转换为List。需要注意的是,Arrays.asList()方法返回的List是固定的,不可以添加或删除元素。如果需要添加或删除元素,可以使用new ...