java各数组间相互转换

发布时间 2023-09-22 16:59:25作者: 学而时习

各数组间相互转换:

int[] data = {1, 2, 3, 4, 5, 6, 7};

1.int[] 转换 List<Integer>
List<Integer> lists = Arrays.stream(data).boxed().collect(Collectors.toList());
(1)Arrays.stream(arr) 可以替换成IntStream.of(arr)。
(2)使用Arrays.stream将int[]转换成IntStream。
(3)使用IntStream中的boxed()装箱。将IntStream转换成Stream<Integer>。
(4)使用Stream的collect(),将Stream<T>转换成List<T>,因此正是List<Integer>。

2.int[] 转换 Integer[]
Integer[] integers = Arrays.stream(data).boxed().toArray(Integer[]::new);
(1)前两步同上,此时是Stream<Integer>。
(2)然后使用Stream的toArray,传入IntFunction<A[]> generator。
(3)这样就可以返回Integer数组。
(4)不然默认是Object[]。

3.List<Integer> 转换 Integer[]
Integer[] integers = list.toArray(new Integer[0]);
(1)调用toArray。传入参数T[]。这种用法是目前推荐的。
(2)List<String>转String[]也同理。

4.List<Integer> 转换 int[]
int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
(1)想要转换成int[]类型,就得先转成IntStream。
(2)这里就通过mapToInt()把Stream<Integer>调用Integer::valueOf来转成IntStream
(3)而IntStream中默认toArray()转成int[]。

5.Integer[] 转换 int[]
int[] arr = Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();
(1)思路同上。先将Integer[]转成Stream<Integer>,再转成IntStream。

6.Integer[] 转换 List<Integer>
List<Integer> lists = Arrays.asList(integers);
(1)最简单的方式。String[]转换List<String>也同理。

//String 转换
String[] strings = {"a", "b", "c"};
7.String[] 转换 List<String>
List<String> list = Arrays.asList(strings1);

8.List<String> 转换 String[]
String[] strings = list.toArray(new String[0]);