数组和List相互转化(摒弃循环)

一、数组转List

1、先定义一个类型为Int的数组,并对这个进行赋值

public class ArraryToList{
    public static void main(String[] args) {
        int[] List = {11,22,33};
    }
}

2、使用‘Arrarys.asList()’方法,将数组转化成List;需要注意的是,‘asList()’方法的参数类型是泛型,使用‘Arrarys.asList()’方法接收List的参数类型也要是支持泛型的类型,然而在第一步中,我们定义的数组是int类型,所以在类型上不匹配(基本数据类型不能作为泛型),所以我们使Integer

import java.util.Arrays;
import java.util.List;

public class ArraryToList{
    public static void main(String[] args) {
//        int-基本数据类型,不支持泛型,所以使用Integer
//        int[] List = {11,22,33};
        Integer[] List = {11,22,33};
        List<Integer> Arrary = Arrays.asList(List);
        System.out.println(Arrary);
    }
}

输出结果:

 3、可以发现我们现在对Arrary进行打印输出后,显示的结果已经转换成数组,那么我们可不可以对这个数组进行操作呢?代码如下:

import java.util.Arrays;
import java.util.List;

public class ArraryToList{
    public static void main(String[] args) {
//        int-基本数据类型,不支持泛型,所以使用Integer
//        int[] List = {11,22,33};
        Integer[] List = {11,22,33};
        List<Integer> Arrary = Arrays.asList(List);
        System.out.println(Arrary);
        System.out.println("----添加操作-----");
        Arrary.add(44);
        System.out.println("----删除操作----");
        Arrary.remove(0);
        System.out.println("---取值操作----");
        System.out.println(Arrary.get(0));
    }
}

分批次运行结果如下: 

 

 

可以发现这个数组并不能进行“添加”、“删除” 的操作,但是可以进行查询操作。这是为什么呢? 

这是因为当我们使用Arrarys.asList()的时候,返回的并不是真正意义上的ArraryList,而是arrarys里面定义的私有的内部类

 如果想改变成正常的集合,我们只需要重新定义一个ArraryList即可,将之前的集合放进去,代码如下

##核心代码如下:
List<Integer> Arrary = Arrays.asList(List);
ArrayList<Integer> newArrayList = new ArrayList(Arrary);
        


##完整版代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArraryToList{
    public static void main(String[] args) {
//        int-基本数据类型,不支持泛型,所以使用Integer
//        int[] List = {11,22,33};
        Integer[] List = {11,22,33};
        List<Integer> Arrary = Arrays.asList(List);
        ArrayList<Integer> newArrayList = new ArrayList(Arrary);
        System.out.println(newArrayList);
        System.out.println("----添加操作-----");
        newArrayList.add(44);
        System.out.println("----删除操作----");
        newArrayList.remove(0);
        System.out.println("---取值操作----");
        System.out.println(newArrayList.get(0));
        System.out.println("再次打印操作后的newArrayList"+newArrayList);
    }
}

执行结果如下:

 二、List转数组

1、定义一个集合,给集合中添加三个数据,使用'toArrary()'方法将集合转换成数组。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArrary {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(11);
        arrayList.add(22);
        arrayList.add(33);
        Object[] objects = arrayList.toArray();
        System.out.println(objects);
    }
}

 注:toArrary()方法返回的类型就是Object

 所以当直接打印输出的时候,打印的并不是数组里面的数据,而是“地址”

 我们要想获取数据只能对它进行遍历,并对里面的每一个数据进行“造型”,才能获取到数据,代码及执行结果如下

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArrary {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(11);
        arrayList.add(22);
        arrayList.add(33);
        Object[] objects = arrayList.toArray();
//        System.out.println(objects);
        for (Object v:objects
             ) {
            System.out.println((int)v);
        }

    }
}

这种方式用起来不是很舒服,需要自己“造型”遍历输出 ;我们还可以使用另一种方式,同样是使用toArrary()方法,但是方法内传递参数(泛型)。具体操作如下

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArrary {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(11);
        arrayList.add(22);
        arrayList.add(33);

//        方法一,直接指定好数组的长度
        Integer[] Arrary1 = new Integer[arrayList.size()];
//        将arrayList列表装进list1数组里
        Integer[] integers = arrayList.toArray(Arrary1);
        System.out.println(integers[0]);

//        方法二,定义的数组长度不够
        Integer[]  Arrary2 = new Integer[0];
//        接收的时候重新定义个数组接收即可
        Integer[] Arrary3 = arrayList.toArray(Arrary2);
        System.out.println(Arrary1[0]);
    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>