Array
数组转集合
错误用法
/*** Arrays.asList()*/@Testpublic void testAsList(){int[] arr1 = {1,2,3};List list = Arrays.asList(arr1);System.out.println(list.size());// 输出为1String[] arr2 = {"欢迎","关注","Java"};List list2 = Arrays.asList(arr2);// list2.add("新增");// 会报错// list2.remove("关注");// 会报错}
原因
通过asList()源码可发现,Arrays.asList()它返回的是 java.util.Arrays.ArrayList ,这个家伙是谁呢?
Arrays.ArrayList 是工具类 Arrays 的一个内部静态类,它没有完全实现List的方法,而 ArrayList直接实现了List 接口,实现了List所有方法。
- 长度不同 和 实现的方法不同 Arrays.ArrayList是一个定长集合,因为它没有重写add,remove方法,所以一旦初始化元素后,集合的size就是不可变的。
- 参数赋值方式不同
正确用法
/*** 将数组转为List*/@Testpublic void testArrayToList(){// 可以使用spring CollectionUtils.arrayToListint[] a = {1,2,3};List list = CollectionUtils.arrayToList(a);System.out.println(list);System.out.println(list.size());// 使用Java8int intArray[] = {1, 2, 3};List<Integer> iList = Arrays.stream(intArray).boxed().collect(Collectors.toList());System.out.println(iList);System.out.println(iList.size());// 还有下面这种,直接使用这种最方便,ArrayList arrayList = new ArrayList<>(Arrays.asList("welcome", "to", "china"));System.out.println(arrayList);System.out.println(arrayList.size());}
