各类之间的转换图
性能比较(灰色字体是不推荐使用)
原数组类型 | 方式 | 底层存储形式 | 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 | 可修改 |
例子:
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
例子:
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
例子:
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
例子:
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
方式 | 转换后的数组类型 |
---|---|
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
原数组类型 | 方式 | 转换后的数组类型 |
---|---|---|
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]