一、Arrays类的定义
Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法
使用时导包:import java.util.Arrays
二、asList方法
源码
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
DEMO1:
public static void main(String[] args) {
int[] array = {1, 2, 3};
List list = Arrays.asList(array);
}
上面这样用是没有错的,但是下面的输出会发现与你预期的不同。
public static void main(String[] args) {
int[] array = {1, 2, 3};
List list = Arrays.asList(array);
System.out.println("size:" + list.size());
System.out.println("size:" + list.get(0));
System.out.println("size:" + list.get(1));
}
但是你如果换成String或者其他的对象类型,结果又是对的。
结论1:基本类型不能作为 Arrays.asList方法的参数,否则会被当做一个参数。
DEMO2:
public static void main(String[] args) {
String[] array = {"1", "2", "3"};
List list = Arrays.asList(array);
list.add("5");
System.out.println(list.size());
}
尝试了一下add,remove等方法,都出现了报错。
结论2:Arrays.asList 返回的 List 不支持增删操作。
DEMO3:
public static void main(String[] args) {
String[] arr = {"1", "2", "3"};
List list = Arrays.asList(arr);
arr[1] = "替换啦";
System.out.println("原始数组"+Arrays.toString(arr));
System.out.println("list数组" + list);
}
这里发现把先前的list的元素也替换了。
结论3:使用Arrays.asLis的时候,对原始数组的修改会影响到我们获得的那个List。