使用Arrays.asList()对数组转化成集合后,其底层数据结构还是数组
例如:
1 String[] str = {"a","b"}; 2 List list = Arrays.asList(str); 3 list.add("c");//报错 4 str[0] = "d";//list.get(0)也随之改变
正确写法为:
1.new ArrayList(),然后for循环数组,一个个add();
2.List list = new ArrayList<>(Arrays.asList(str));//推荐写法
3.使用java8的Stream:
1 Integer [] myArray = { 1, 2, 3 }; 2 List myList = Arrays.stream(myArray).collect(Collectors.toList()); 3 //基本类型也可以实现转换(依赖boxed的装箱操作) 4 int [] myArray2 = { 1, 2, 3 }; 5 List myList = Arrays.stream(myArray2).boxed().collect(Collectors.toList());
4.使用 Apache Commons Collections:
1 List<String> list = new ArrayList<String>(); 2 CollectionUtils.addAll(list, str);