数组/List 互转

各类之间的转换图

请添加图片描述

1. 数组转List

性能比较(灰色字体是不推荐使用)

原数组类型方式底层存储形式List是否可以修改性能
integer[]Arrays.asList()数组(类型是List)不可修改
Integer[]new ArrayList(Arrays.asList())List可修改
Integer[]list.addAll(Arrays.asList(…))List可修改
Integer[]Collections.addAll(list,数组)List可修改和addAll()相似,但运行更快
int[]Arrays.stream(数组) .boxed().collect(Collectors.toList())List可修改

1.1 Arrays.asList()

例子:

Integer[] array = new Integer[]{2, 3};
List<Integer> list = Arrays.asList(array);

System.out.println(list);
System.out.println(list.getClass().toString());  // 查看数据类型

结果

[2, 3]
class java.util.Arrays$ArrayList

1.2 new ArrayList(Arrays.asList(数组))

例子:

Integer[] array = new Integer[]{2, 3};
List<Integer> list = new ArrayList<>(Arrays.asList(array));
list.add(1);

System.out.println(list);
System.out.println(list.getClass().toString());  // 查看数据类型

结果

[2, 3, 1]
class java.util.ArrayList

1.3 list.addAll(Arrays.asList())

例子:

Integer[] array = new Integer[]{2, 3};
List<Integer> list = new ArrayList<>();
list.addAll(Arrays.asList(array));
list.add(1);

System.out.println(list);
System.out.println(list.getClass().toString());  // 查看数据类型

结果

[2, 3, 1]
class java.util.ArrayList

1.4 Collections.addAll()

例子:

Integer[] array = new Integer[]{2, 3};
List<Integer> list = new ArrayList<>();
Collections.addAll(list, array);
list.add(1);

System.out.println(list);
System.out.println(list.getClass().toString());  // 查看数据类型

结果

[2, 3, 1]
class java.util.ArrayList

2. List 转数组

方式转换后的数组类型
list.toArray(new String[0])String[]
list.toArray(new int[0][0])int[][]

例子:

// 初始链表是由数组构造的,只是为了省事,不想一个个add
int[][] nums = new int[][]{{8, 19}, {1, 3}, {2, 6}};
List<int[]> list = new ArrayList<>(Arrays.asList(nums));

// list 转 数组
int[][] ts = list.toArray(new int[0][0]);
System.out.println(Arrays.deepToString(ts));
System.out.println(ts.getClass());

结果

[[8, 19], [1, 3], [2, 6]]
class [[I

3. Integer[] 和 int[] 互转

原数组类型方式转换后的数组类型
int[]Arrays.stream(…).boxed().toArray(Integer[]::new)Integer[]
Integer[]Arrays.stream(…).mapToInt(Integer::valueOf).toArray()int[]

例子:

// 初始数组 init
int[] init = {1, 2, 3, 4, 5};

// int[] 转 Integer[]
Integer[] integerArray = Arrays.stream(init).boxed().toArray(Integer[]::new);
System.out.println(Arrays.toString(integerArray));

// Integer[] 转 int[]
int[] intArray = Arrays.stream(integerArray).mapToInt(Integer::valueOf).toArray();
System.out.println(Arrays.toString(intArray));

结果

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值