java 数组 放入 list_Java> List与数组之间相互转换

时间:2025-03-09 08:03:57

List一般包含两种存储结构:顺序存储ArrayList和链式存储LinkedList。

List与数组之间如何相互转行呢?

数组转List

1. 利用遍历数组每个元素,将元素一个个加入List

最通用的方法,适合任意基本元素类型和语言。

示例:

List list = new ArrayList<>();

int[] a = new int[]{3,8,20,7,11,25};

for (Integer d: a) {

(d);

}

(::println);

2. 利用数组工具类Arrays的内置方法asList

注意(array)是Arrays的一个内部类的方法,并非我们熟知的或,而且返回的是一个List的视图,只能用于读取数据,不能修改或删除数据。

如果需要修改,需要在此基础上新建一个通用的List。

/*

* 对象数组转化为List

*/

Integer[] a = new Integer[]{3,8,20,7,11,25};

List list = new ArrayList((a));

/*

* 基本类型数组先用流对每个元素装箱, 转化为对应包装类型数组

* 再通过转化为列表视图

* 通过新建List的构造器, 新建列表List

*/

int[] b = new int[]{3,8,20,7,11,25};

Integer[] boxB = (b).boxed().toArray(Integer[]::new);

List list = new ArrayList((boxB));

3. 利用集工具类方法

直接利用Collections的add方法,将数组所有元素加入list中。要求数组必须是对象类型数组,不能是基本类型数组。如果是基本类型数组,需要先转换成对象类型数组。

这种方法本质上,跟方法1相同,都是遍历数组元素,然后加入list。

Integer[] a = new Integer[]{3,8,20,7,11,25};

List list = new ArrayList<>();

(list, a);

List转数组

1. 遍历List元素,将元素填入数组

List list = new ArrayList<>();

(new Integer[]{1,2,3,4,5});

int[] a = new int[()];

int i = 0;

for (Integer d: list) {

a[i] = d;

i ++

}

for (int i = 0; i < ; i ++) {

(a[i]);

}

2. 利用List的toArray方法

利用List的toArray方法,将当前list转化为Object数组,再讲Object数组转化为对应类型数组,比如Object[] -> Integer[] -> int[]

// 构建列表list, 并插入数据用于测试

List list = new ArrayList<>();

for (int i = 0; i < 5; i++){

(i);

}

// List转Object[]

Object[] objs = ();

// Object[] 转Integer[]

Integer[] nums = (objs).toArray(Integer::new);

// Integer[] 转int[]

int[] arr = (nums).mapToInt(Integer::valueOf).toArray();

3. 利用List流的mapToInt方法

// 构建列表list, 并插入数据用于测试

List list = new ArrayList<>();

for (int i = 0; i < 5; i++){

(i);

}

int[] arr = ().mapToInt(Integer::intValue).toArray;

// 也可以用下面的语句

int[] arr = ().mapToInt(Integer::valueOf).toArray;