1 数组转换为List
1.1 使用java.util.Arrays工具类中的asList()方法
String[] arrays = {"a", "b", "c"};
List<String> list = Arrays.asList(arrays);
注意
: 将数组转换List
后,不能对List
增删,只能查改,否则抛出 UnsupportedOperationException
异常
对转换后的
List
插入一条数据list.add("d");
执行后抛出 :
java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108)
原因解析:
Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错。
使用场景:
Arrays.asList(strArray)方式仅能用在将数组转换为List后,不需要增删其中的值,仅作为数据源读取使用。
1.2 使用Stream中的Collector收集器
String[] arrays = {"a", "b", "c"};
List<String> listStrings = Stream.of(arrays).collect(Collectors.toList());
- 转换后的
List
属于java.util.ArrayList
能进行正常的增删查操作
2. List转换为数组
2.1 使用Stream
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String[] strings = list.stream().toArray(String[]::new);
2.2 使用List中的toArray()方法
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String[] strings = list.toArray(new String[list.size()]);