asList函数实现数组和List之间的转换
asList函数是JDK中Arrays类中的一个静态方法,用于将数组转换为List集合。它的原型如下:
public static <T> List<T> asList(T... a)
asList函数接受一个泛型参数,将传入的数组元素转换为一个List集合。它返回的List对象是一个固定大小的列表,意味着它不能进行添加或删除元素的操作。当我们修改List集合中的元素时,底层数组也会相应发生改变。
下面我们将通过实例来详细说明asList函数的用法和转换过程。
1. 将数组转换为List集合
String[] array = {"apple", "banana", "orange"};
List<String> list = Arrays.asList(array);
在上述代码中,我们首先创建一个String类型的数组array,然后调用asList函数将数组转换为List集合。最终我们得到的list是一个包含数组元素的List集合。
2. 修改List集合中的元素
list.set(0, "grape");
通过调用list的set函数,我们可以修改List集合中的元素。在上述代码中,我们将原来的"apple"替换为"grape"。
3. 验证数组的改变
System.out.println(Arrays.toString(array));
通过调用Arrays类中的toString函数,我们可以将数组转换为字符串并打印出来。在上述代码中,我们可以看到数组的 个元素已经被修改为"grape"。
4. 将List集合转换为数组
String[] newArray = list.toArray(new String[list.size()]);
通过调用List的toArray函数,我们可以将List集合转换为数组。在上述代码中,我们首先创建一个与list集合相同大小的数组newArray,然后将list集合中的元素复制到新创建的数组中。
5. 验证数组的转换
for (String fruit : newArray) {
System.out.println(fruit);
}
通过遍历数组,我们可以逐个打印出转换后的数组元素。在上述代码中,我们可以看到转换后的数组内容与原数组相同。
需要注意的是,asList函数在转换过程中并没有创建新的ArrayList对象,而是返回了一个实现了List接口的固定大小的ArrayList对象。这意味着我们无法对该ArrayList进行添加或删除元素的操作,只能修改元素的值。如果我们需要对List集合进行添加或删除操作,应该使用ArrayList类的构造函数来创建一个新的ArrayList对象。
总结:
asList函数是Arrays类中的一个静态方法,用于将数组转换为List集合。它返回的List集合是一个固定大小的列表,只能修改元素的值,不能进行添加或删除操作。转换后的数组内容与原数组一致,当我们修改List集合中的元素时,底层数组也会相应发生改变。如果需要对List集合进行添加或删除操作,应该使用ArrayList类的构造函数创建一个新的ArrayList对象。
