数组与List的相互转换
- List转数组:采用集合的toArray()方法
- 数组转List:采用Arrays的asList()方法
数组转换为集合
注意:在数组转集合的过程中,要注意是否使用了视图的方式直接返回数组中的数据。以Arrays.asList()为例,它把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出 UnsupportedOperationException异常。
这是因为Arrays.asList体现的是适配器模式,后台的数据仍是原有数组。asList的返回对象是一个Arrays的内部类,它并没有实现集合个数的相关修改操作,这也是抛出异常的原因。
集合转数组
集合转数组相对简单,一般在适配别人接口的时候常常用到
代码例子
1public class Main { 2 public static void main(String[] args) { 3 4 //1.数组转换为集合 5 String[] strs = new String[3]; 6 strs[0] = "a"; 7 strs[1] = "b"; 8 strs[2] = "c"; 9 List<String> stringList = Arrays.asList(strs); 10 System.out.println(stringList); 11 //1.1注意:直接使用add、remove、clear方法会报错 12// stringList.add("abc"); 13 //1.2如果想要正常的使用add等修改方法,需要重新new一个ArrayList 14 List<String> trueStringList = new ArrayList<>(Arrays.asList(strs)); 15 trueStringList.add("abc"); 16 System.out.println(trueStringList); 17 18 //2.集合转数组 19 List<Integer> integerList = new ArrayList<>(); 20 integerList.add(1); 21 integerList.add(2); 22 integerList.add(3); 23 24 //新生成的数组大小一定要大于原List的大小 25 Integer[] integers = new Integer[3]; 26 integerList.toArray(integers); 27 System.out.println(Arrays.asList(integers)); 28 } 29 30}