List 转 数组
1.1 使用List toArray(T[] a)方法
// List 转 数组
List<String> list = new ArrayList<>();
list.add("java");
list.add("python");
list.add("docker");
String[] strings = list.toArray(new String[list.size()]);
1.2 使用JAVA8 流
List<String> list = new ArrayList<>();
list.add("java");
list.add("python");
list.add("docker");
String[] strings = list.stream().toArray(String[]::new);
1.3 错误的方式
List<String> list = new ArrayList<>();
list.add("java");
list.add("python");
list.add("docker");
String[] strings = (String[]) list.toArray();
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at top.lconcise.practice.list_demo.ListDemo.main(ListDemo.java:19)
数组 转 List
2.1 Arrays.asList
String[] arrays = {"java", "python", "docker"};
List<String> strings = Arrays.asList(arrays);
注意: 将数组转换List后,不能对List增删,只能查改,否则抛出 UnsupportedOperationException异常
list.add("js");
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at top.lconcise.practice.list_demo.ListDemo02.main(ListDemo02.java:20)
原因
Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错。
2.2 JAVA8 流 数组转List
String[] arrays = {"java", "python", "docker"};
List<String> list = Arrays.stream(arrays).collect(Collectors.toList());
这里的List是java.util包中的ArrayList
网友评论