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));
	}
}

这段代码看似没有问题,但实际运行结果:关于Arrays类的一些坑

下面我们看看源码:

关于Arrays类的一些坑这里asList(T... a)方法自己创建了一个ArrayList<>(a)对象。我们进去这个对象中:

关于Arrays类的一些坑

这里发现这个对象根本没有为我们提供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));
	}
}

输出结果关于Arrays类的一些坑

 

相关文章: