数组 转 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();