背景
刷算法的时候经常遇到要将List和数组进行转换的情况,这篇文章就对List和数组相互转换的方法做个整理。
相同类型数据的集合转List
Java9之后可以使用以下方法将一堆相同类型的数据的集合转为List
class Test{
public static void main(String[] args){
List<Integer> integers = List.of(1, 2, 3);
List<String> strs = List.of("a", "b", "c");
}
}
List转数组
方法一(推荐):使用List的实例方法toArray
class Test{
public static void main(String[] args){
List<Integer> integers = List.of(1, 2, 3);
//无参数,返回Object对象数组
Object[] objects = integers.toArray();
//有参数,传入对应类型的数组,不能是基本数据类型,因为参数是泛型数组 T[] a
Integer[] integers1 = integers.toArray(new Integer[0]);
Integer[] integers2 = integers.toArray(new Integer[integers.size()]);
/*
* 当 List 的实际元素数量小于或等于提供的数组长度时,
* 会直接使用提供的数组来存储元素。
* 如果实际元素数量大于提供的数组长度,会创建一个新的合适长度的数组来存储元素。
* 所以传入的数组的大小可以是0也可以是integers.size(),也可以更大
* */
}
}
方法二:使用流结合方法引用
Java8后支持流
class Test{
public static void main(String[] args){
List<Integer> integers = List.of(1, 2, 3);
Integer[] integers1 = integers.stream().toArray(Integer[]::new);
}
}
数组转List
方法一(推荐):使用Arrays.asList方法
class Test{
public static void main(String[] args){
//注意!!!如果是基本类型的数组则整体成为List中的一个元素
int[] integers=new int[]{1,2,3};
List<int[]> ints = Arrays.asList(integers);
//如果是引用类型,则是我们希望的结果:数组中的每个元素成为list中的每一个元素
Integer[] integers1=new Integer[]{1,2,3};
List<Integer> integers2 = Arrays.asList(integers1);
}
}
方法二:使用流
同样Java8后支持
class Test{
public static void main(String[] args){
//这种方式只适合引用类型的数组
Integer[] integers=new Integer[]{1,2,3};
List<Integer> collect = Arrays.stream(integers).collect(Collectors.toList());
}
}
如果有别的方式,欢迎在评论区讨论!!!
开发入门中,欢迎指教~