- Arrays.asList()将数组转换为集合后,底层其实还是数组,它返回的是Arrays的一个内部类,体现了适配器模式。
- 传递的数组必须是对象数组,而不是基本类型。
- 当传入一个原生数据类型数组时,Arrays.asList() 的真正得到的参数就不是数组中的元素,而是数组对象本身!此时List 的唯一元素就是这个数组。
- 使用集合的修改方法:add()、remove()、clear()会抛出UnsupportedOperationException异常。
package com.xiaobu.learn.array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayDemo1 {
public static void main(String[] args) {
testAddAndRemove();
}
public static void test(){
int[] myArray = {1,2,3};
List list = Arrays.asList(myArray);
System.out.println("list.size() = " + list.size());
System.out.println("list.get(0) = " + list.get(0));
int[] array = (int[]) list.get(0);
System.out.println("array[0] = " + array[0]);
System.out.println("list.get(1) = " + list.get(1));
}
public static void testAddAndRemove(){
int[] myArray = {1,2,3};
List list = Arrays.asList(myArray);
list.add(4);
list.remove(1);
System.out.println("list = " + list);
}
public static void newalist(){
int[] myArray = {1,2,3};
List list = new ArrayList<>(Arrays.asList(myArray));
System.out.println("list = " + list);
list.add(4);
System.out.println("list = " + list);
list.remove(2);
System.out.println("list = " + list);
list.clear();
System.out.println("list = " + list);
}
}
手动创建list
- 最简易的方法
List list2 = new ArrayList<>(Arrays.asList(1,2,3));
- 使用java8 stream创建
Integer [] myArray = { 1, 2, 3 };
List list = Arrays.stream(myArray).collect(Collectors.toList());
System.out.println("list = " + list);
int [] myArray2 = { 1, 2, 3 };
List myList = Arrays.stream(myArray2).boxed().collect(Collectors.toList());
System.out.println("myList = " + myList);