1、Arrays.asList(T... a)方法
看这段代码
package com.chen.stu;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] strs = {"vv","xx","sss"};
List<String> asList = Arrays.asList(strs);
//这里我向asList集合中添加元素
asList.add("xxxx");
//输入
asList.forEach((str)->System.out.println(str));
}
}
这段代码看似没有问题,但实际运行结果:
下面我们看看源码:
这里asList(T... a)方法自己创建了一个ArrayList<>(a)对象。我们进去这个对象中:
这里发现这个对象根本没有为我们提供add、remove相关的方法。所有才会出现上面的UnsupportedOperationException异常。
下面我们改变一下代码
package com.chen.stu;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] strs = {"vv","xx","sss"};
List<String> asList = Arrays.asList(strs);
//我们重新创建一个list对象
asList = new ArrayList<String>(asList);
//这里我向asList集合中添加元素
asList.add("xxxx");
//输入
asList.forEach((str)->System.out.println(str));
}
}
输出结果