Java 数组与ArrayList的互转

63 阅读1分钟

数组 转 List

数组转其他,都要借助Arrays工具类:

  • 如果是引用类型数组,则可以直接Arrays.asList
  • 如果是基本类型数组,则要转为Arrays.stream

引用类型数组 Integer[] 转 List

Integer[] array = new Integer[]{1,2,3};
List<Integer> list = Arrays.asList(array );

基本类型数组 int[] 转 List

  1. 使用Arrays.streamint[]转换成IntStream
  2. 使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>
  3. 使用Streamcollect(),将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();