Java基础 --- Array和List互相转换

List 转 Array

使用toArray方法只能返回 Object [] 数组

List<Integer> nums = new ArrayList<Integer>();
Object [] array = nums.toArray();

而强制转型会出现异常

Integer[] temp = (Integer[])nums.toArray();
class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Integer;

可以使用以下方式进行指定类型转换, 但是注意只能返回引用类型
如下,如果是 int [] temp 就会报错

Integer[] temp = nums.toArray(new Integer[nums.size()]);
//int [] temp = nums.toArray(new Integer[nums.size()]); 会报错

Integer 数组转化成i int 数组

public void test05() {
    
    
    Integer[] arr = {
    
    12,13,15};
    //先将Integer[]转成Stream<Integer>,再转成IntStream
    int[] res = Arrays.stream(arr).mapToInt(Integer::valueOf).toArray();
}

Array 转 List

//注意这里必须是 Integer 因为list只能用引用类型
Integer [] array = new Integer[] {
    
    1,2,3,45};
List<Integer> list = Arrays.asList(array);

包装类数组和基本类型数组互相转换

Integer数组转成int数组

public void test05() {
    
    
    Integer[] arr = {
    
    12,13,15};
    //先将Integer[]转成Stream<Integer>,再转成IntStream
    int[] res = Arrays.stream(arr).mapToInt(Integer::valueOf).toArray();
}

int数组转成Integer数组

public void test06() {
    
    
    int[] arr = {
    
    12,13,15};
    //先将int[]装成intStream,然后使用boxed()进行装箱,得到Stream(Integer)
    //然后使用Stream的toArray,传入IntFunction<A[]> generator,返回Integer[]
    Integer[] res = Arrays.stream(arr).boxed().toArray(Integer[]::new);
}

猜你喜欢

转载自blog.csdn.net/weixin_38803409/article/details/126567888