Java 数组与ArrayList的互转
原创
©著作权归作者所有:来自51CTO博客作者小锋学长生活大爆炸的原创作品,请联系作者获取转载授权,否则将追究法律责任
数组 转 List
数组转其他,都要借助Arrays工具类:
- 如果是引用类型数组,则可以直接用
Arrays.asList; - 如果是基本类型数组,则要先转为
Arrays.stream:
引用类型数组 Integer[] 转 List
Integer[] array = new Integer[]{1,2,3};
List<Integer> list = Arrays.asList(array );基本类型数组 int[] 转 List
- 使用
Arrays.stream将int[]转换成IntStream
- 使用
IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>
- 使用
Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>
int[] array = new int[]{1,2,3};
// Arrays.stream(arr) 可以替换成IntStream.of(arr)
List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());基本类型数组 int[] 转 引用类型数组 Integer[]
int[] array = new int[]{1,2,3};
// 使用Stream的toArray,传入IntFunction<A[]> generator
// 不然默认是Object[]
Integer[] integer = Arrays.stream(array).boxed().toArray(Integer[]::new);引用类型数组 Integer[] 转 基本类型数组 int[]
Integer[] integer = new Integer[]{1,2,3};
int[] array = Arrays.stream(integer).mapToInt(Integer::intValue).toArray();List 转 数组
List 转 引用类型数组Integer[]
List<Integer> list = new ArrayList<>();
Integer[] integers = list.toArray(new Integer[0]);
List 转 基本类型数组 int[]
List<Integer> list = new ArrayList<>();
int[] array = list.stream().mapToInt(Integer::intValue).toArray();