数组和集合的转换
基本类型数组转换为包装类型数组
int数组转包装类数组
int[] ary = {1,3,4}; Integer[] intary = Arrays.stream(ary).boxed().toArray(Integer[]::new);//Stream+构造函数引用
数组转集合
Collections.addAll();//数组必须是包装类型;集合可变
Integer[] ary = {2,3,5}; ArrayList<Integer> arylist = new ArrayList<>(); Collections.addAll(arylist,ary); arylist.add(10); System.out.println(arylist);Arrays.asList();//包装类型的数组,对集合操作会导致原数组的改变;转换后的集合长度不能变;不能添加和删除,可以修改.set(index,value);修改后原数组内容也会改变;
Integer[] ary1 = {2,3,5}; List<Integer> list = Arrays.asList(ary1);//new了一个ArrayList集合,注意了,这个可不是ArrayList类,而是Arrays里面的一个静态内部类如果传入的参数是一个数组,那么这个数组一定要是引用类型才能将其转换为List集合,当传入基本数据类型数组时则会将这个数组对象当成一个引用类型对象存进List集合。
int[] ary = {2,3,5}; List<int[]> intarylist = Arrays.asList(ary); Integer[] ary1 = {2,3,5}; List<Integer> list = Arrays.asList(ary1); List<Integer> list1 = Arrays.asList(1, 3, 5, 56);
集合转数组
List.toArray();//无参构造会转成object数组
set.toArray();同上,set可去重再转成数组
List.toArray(T[] a );转成指定引用类型的数组;如果a的长度不够,会放到新数组中返回;
Integer[] ary1 = {2,3,5}; List<Integer> list = Arrays.asList(ary1); Object[] objects = list.toArray(); Integer[] ary2 = new Integer[list.size()]; Integer[] ary3 = list.toArray(intary);
list和set相互转换
1.利用各自的构造函数
2.list.addAll(set); set.addAll(list);