|
日常开发时,经常遇到需要List与数组互相转换的场景。 List转换成数组,可以用List的toArray()或者toArray(T[] a)的方法。 数组转换成List,可以用Arrays.asList()或者Collections.addAll()方法。 如果仅仅为了打印数组,不需要把数组转换成List, 可以使用Arrays.toString()方法。
一.List转数组
List转换成数组可以调用toArray方法,可以将List直接转为Object[]数组 这里有两个重载的方法, 一般使用带泛型参数的方法:
Object[] toArray();
<T> T[] toArray(T[] a);
无参数toArray方法,这里注意不能强转,可能会出现报错.
泛型的toArray方法要注意类型必须是包装类型,基本类型是不行的.
二.数组转List
可以使用Arrays.asList()或者Collections.addAll()方法,推荐使用Collections.addAll()方法,这样得到的返回对象可以往里面添加新的元素。
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
解决方法是新建一个List对象,并且加入返回的strList,然后再add新元素:
List<String> strListNew = new ArrayList<>(strList);
strListNew.add("new data");
Collections.addAll():
String[] strArray = { "a", "b" };
List<String> strList = new ArrayList<>(strArray.length);
Collections.addAll(strList, strArray);
strList.add("c");
得到的返回对象可以直接添加新的元素。
Java8可用stream流将3种基本类型数组转为List
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());
String[] arrays = {"a", "b", "c"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());
其他的数据类型short[]、byte[]、char[]在JDK1.8中目前不支持
到此这篇关于JAVA中的数组和List转换的文章就介绍到这了,更多相关java 数组和list转换内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!
您可能感兴趣的文章:- Java实现List与数组互相转换的两种方法
- java中list和数组互相转换的一些方法总结
- Java中数组和List的互相转换问题小结
- Java数组转换为List的四种方式
- Java中List与数组之间的相互转换
- Java 从json提取数组并转换为list的操作方法
- java list,set,map,数组间的相互转换详解
- Java List转换成String数组几种实现方式详解
- Java中List与数组相互转换实例分析
|