方法一:通过List构造方法
public static void main(String[] args) {
Integer[] integerArray = {1, 3, 5, 10, 18};
//方法一:
List<Integer> listOne = new ArrayList(Arrays.asList(integerArray));
System.out.println(listOne);
listOne.add(20);
System.out.println(listOne);
}
通过ArrayList中一个构造方法来将数组转化成ArrayList,但是由于ArrayList中的构造方法里面没有直接以数组作为参数的方法,所以需要先通过Arrays.asList()方法进行一个简单的转化,使用的构造方法如下图:
方法二:通过Arrays
public static void main(String[] args) {
Integer[] integerArray = {1, 3, 5, 10, 18};
//方法二:
List<Integer> listTwo = Arrays.asList(integerArray);
System.out.println(listTwo);
listTwo.add(25);
System.out.println(listTwo);
}
通过Arrays这个数组工具类中的asList方法将数组转换成ArrayList,这里如果你没看过Arrays的源码的话很容易掉进去一个很深的坑里,这里通过asList方法返回的这个ArrayList其实并不是我们平时开发中经常用到的那个util包下的ArrayList,而是Arrays类里面的一个静态内部类,该静态内部类的内部实现是一个被final修饰的不可变的数组,所以我们不能进行add等操作的,只能进行一些在该静态内部类实现了的方法,如果进行add操作的话,会出现UnsupportedOperationException异常,这个问题大家在使用的时候一定要注意
方法三:通过Collections
public static void main(String[] args) {
Integer[] integerArray = {1, 3, 5, 10, 18};
//方法三:
List<Integer> listThree = new ArrayList<>();
Collections.addAll(listThree, integerArray);
System.out.println(listThree);
listThree.add(30);
System.out.println(listThree);
}
该方式通过Collections中的addAll方法将数组里面的每一个元素通过循环的方式放入到List中,这里使用的Collections.addAll()方法源码如下: