Java中Integer[]、int[]、List互转

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class Test {
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3};
 
        // int[] 转 List
        // Arrays.stream将int[]转化为IntStream
        // boxed()装箱,将IntStream转化为Stream
        // collect将Stream转化为List
        List list1 = Arrays.stream(arr1).boxed().collect(Collectors.toList());
        
 
        // int[] 转 Integer[]
        // 方法同上,在boxed()装箱这一步时已经转化为了Stream
        // 使用toArray()函数将其转化为数组
        // 数组类型是Object[],所以最后进行类型转换 
        Integer[] integers1 = Arrays.stream(arr1).boxed().toArray(Integer[]::new);
        // 或者
        // Integer[] integers1 = (Integer[])Arrays.stream(arr1).boxed().toArray();
 
        
        // List 转 Integer[]
        // 使用toArray()之后进行类型转换
        Integer[] integers2 = list1.toArray(new Integer[]{});
        // 或者
        // Integer[] integers2 = (Integer [])list1.toArray();
        
 
        // List 转 int[]
        // stream()先将List转换为Stream
        // 再通过mapToInt(),使用Integer::valueOf方法,将Stream转换为IntStream
        // IntStream的toArray()方法默认将其转化为int[]
        int[] arr2 = list1.stream().mapToInt(Integer::valueOf).toArray();
        
 
        // Integer[] 转 int[]
        // 思路同上,先将Integer[]转成Stream,再转成IntStream。
        int[] arr3 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
        
 
        // Integer[] 转 List
        // 直接调用Arrays.asList()方法即可
        List list2 = Arrays.asList(integers1);

    }
}

总结

  1. 将List 或者 Integer[]转换为int[] :首先要调用stream()方法将其转换为Stream,再使用mapToInt()将其转换为IntStream,最后使用toArray()即可转换为int[]。
  2. 将int[]转换为List或者Integer[]:首先调用Arrays.stream()方法,将int[]转化为IntStream,再用boxed()对其封装转化为Stream,再转换为List或者toArray()后进行类型转换变为Integer[]。
  3. List与Integer[]的相互转换:直接使用toArray()或者Arrays.asList()方法。不过要注意Object[]到Integer[]的类型转换。

你可能感兴趣的:(Java中Integer[]、int[]、List互转)