数组和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
二维码