1.直接使用Arrays.asList()
Integer [] myArray = { 1, 2, 3 };
List<Integer> myList= Arrays.asList(myArray);
myList.add(4);//运行时报错:UnsupportedOperationException
myList.remove(1);//运行时报错:UnsupportedOperationException
myList.clear();//运行时报错:UnsupportedOperationException
使用集合的修改方法:add()、remove()、clear()会抛出异常。
2.最简便的方法(推荐)
Integer [] myArray = { 1, 2, 3 };
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(myArray)); // [1, 2, 3]
myList.add(4); // [1, 2, 3 ,4]
myList.remove(1);// [1, 3 ,4]
myList.clear();// []
会发现程序正常运行,并没有抛出异常
Integer [] myArray = { 1, 2, 3 };
List<Integer> myList= Arrays.asList(myArray);
myList.getClass(); // java.util.Arrays$ArrayList
Arrays.asList() 方法返回的并不是 java.util.ArrayList ,而是 java.util.Arrays 的一个内部类,这个内部类并没有实现集合的修改方法或者说并没有重写这些方法。
Integer [] myArray = { 1, 2, 3 };
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(myArray)); // [1, 2, 3]
myList.getClass(); // java.util.ArrayList
而这种方法则返回的是 java.util.ArrayList ,也就不难理解了
3.使用 Java8 的Stream(推荐)
Integer [] myArray = { 1, 2, 3 };
List<Integer> collect = Arrays.stream(myArray).collect(Collectors.toList()); // [1, 2, 3]
collect .getClass() // java.util.ArrayList
使用Java8 的Stream这种方法则返回的也是 java.util.ArrayList
4.使用 Java9 的 List.of()方法
Integer[] array = {1, 2, 3};
List<Integer> list = List.of(array); // [1, 2, 3]