java数组和list转换_js将数组转换成字符串

2022-09-25 12:51:54 浏览数 (2)

大家好,又见面了,我是你们的朋友全栈君。

日常开发时,经常遇到需要List与数组互相转换的场景。 List转换成数组,可以用List的toArray()或者toArray(T[] a)的方法。 数组转换成List,可以用Arrays.asList()或者Collections.addAll()方法。 如果仅仅为了打印数组,不需要把数组转换成List, 可以使用Arrays.toString()方法。

一.List转数组

List转换成数组可以调用toArray方法,可以将List直接转为Object[]数组 这里有两个重载的方法, 一般使用带泛型参数的方法:

代码语言:javascript复制
Object[] toArray();
<T> T[] toArray(T[] a);

无参数toArray方法,这里注意不能强转,可能会出现报错.

泛型的toArray方法要注意类型必须是包装类型,基本类型是不行的.

二.数组转List

可以使用Arrays.asList()或者Collections.addAll()方法,推荐使用Collections.addAll()方法,这样得到的返回对象可以往里面添加新的元素。

代码语言:javascript复制
String[] strArray = { "a", "b" };
List<String> strList = Arrays.asList(strArray);

注意该方法的返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList, 它并非java.util.ArrayList类。 java.util.Arrays.ArrayList类具有set(),get(),contains()等方法,但是不支持添加add()或删除remove()方法,调用这些方法会报错。

如果直接往返回的list添加一个新元素,运行会报错UnsupportedOperationException

代码语言:javascript复制
strList.add("c");

解决方法是新建一个List对象,并且加入返回的strList,然后再add新元素:

代码语言:javascript复制
List<String> strListNew = new ArrayList<>(strList);
strListNew.add("new data");

Collections.addAll():

代码语言:javascript复制
String[] strArray = { "a", "b" };
List<String> strList = new ArrayList<>(strArray.length);
Collections.addAll(strList, strArray);
strListNew.add("c");

得到的返回对象可以直接添加新的元素。

Java8可用stream流将3种基本类型数组转为List

代码语言:javascript复制
List<Integer> intList= Arrays.
stream(new int[] { 1, 2,  3}).boxed().collect(Collectors.toList());
List<Long> longList= Arrays.
stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
List<Double> doubleList= Arrays.
stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
代码语言:javascript复制
String[] arrays = {"a", "b", "c"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());

其他的数据类型short[]byte[]char[]在JDK1.8中目前不支持

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172262.html原文链接:https://javaforall.cn

0 人点赞