常规for循环转换
int[] nums = new int[]{1,2,3};
ArrayList<Integer> list1 = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
list1.add(nums[i]);
}
使用工具类的方法转换
ArrayList<Integer> list2 = new ArrayList<>();
Collections.addAll(list2,nums);//此处报错
是因为方法addALL的参数 T… element会把数组视为一个整体,而不是一个个元素
public static boolean addAll(Collection<? super T> c, T… elements)
只有数组不为基本数据类型时才可以使用addALL方法
Integer[] nums = new Integer[]{1,2,3};
ArrayList<Integer> list2 = new ArrayList<>();
Collections.addAll(list2,nums);
System.out.println(list2);
那么用Arrays.asList()方法是否可行呢 答案是不可以
int[] nums2 = {1, 2, 3};
List<int[]> list3 = Arrays.asList(nums2);
System.out.println(list3);
//输出结果 [[I@776ec8df]
总结:
常规的for循环可以将一个数组的元素逐个添加到ArrayList中。
使用工具类的方法时,可以使用Collections.addAll()方法将数组的元素添加到ArrayList中。
但是,需要注意的是,如果数组是基本数据类型的数组,addALL方法会将整个数组视为一个元素,而不是逐个添加。因此,只有当数组不是基本数据类型时,才可以使用addALL方法。
另外,使用Arrays.asList()方法将基本数据类型的数组转换为List时会出现问题,会将整个数组作为一个元素添加到List中。