前言
数组与链表都是我们在编码过程中最经常使用的数据结构,数组是一种连续的数据结构,而链表是一种离散的数据结构,我们在编码的过程中经常需要在这两种数据结构之间进行来回的转换,从而来解决我们遇到的一些问题,这里我总结了一些数组和链表之间的转换方法。
数组到集合的转换
-
遍历数组,使用list.add()逐个添加
循环遍历方法是我们最容易想到的,但是涉及到循环时间效率就比较低。
int arr[] = {1, 2, 3, 4, 5};
List<Integer> list = new ArrayList<>();
for (int i = 0; i < arr.length;i++){
list.add(arr[i]);}
运行结果:
这种方法比较简单,也非常好理解。
-
数组自带的工具集,Arrays.aslist(arr).
数组自带的工具集虽然使用非常方便,不用自己编写代码,直接调用既可以使用,但是也有一定的局限性,只能转换引用类型的数组,不能转换基本数据类型的数组。
比如可以转换数组:String arr[];
但是不能转换数组:int arr[], 只能转换integer arr[].
Integer arr[] = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
运行结果:
这种方法针对于引用类型的数组使用起来还是非常的方便的,直接调用系统类就可以实现。
-
基本数据类型数组的一步转换
方法2只能转换基本数据类型不能转换引用数据类型,但是我们常常使用的都是Int整型数组,所以这种方法可以将基本数据类型也一步转换为链表。
int arr[] = {1, 2, 3, 4, 5};
List<Integer> list = IntStream.of(arr).boxed().collect(Collectors.toList());
运行结果:
链表转换为数组
-
遍历集合
将链表转换为数组也是我们常常要使用到的,第一种方式就是遍历链表将链表的数值赋值给数组。
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
int arr[]=new int[list.size()];
for(int i=0;i<list.size();i++){
arr[i]=list.get(i);}
运行结果:
-
使用工具集
可以将链表转化为引用数据类型的数组
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
Integer arr[]=new Integer[list.size()];
list.toArray(arr);
for(Integer a:arr){
System.out.print(a+" ");}
这里可以将链表转换为引用数据类型,然后再将引用数据类型转变为基本数据类型即可。
总结
因为数组和链表是我们非常常见的两种数据结构,在我们的编码过程中也是十分重要的,而两者之间的转化也是我么常做的,所以我总结了常用的几种转换方法.
希望可以帮到小伙伴吗。希望小伙伴们可以点赞关注。