环境
- JDK1.8
- IDEA 2019.1
一、数组转为集合
1、转换为不可变集合
@Test
public void arrayToListTest() {
String[] array = new String[]{"Apple", "Xiaomi", "Huawei", "Vivo", "Oppo"};
// 从数组转为集合,集合list长度不可更改
List<String> list = Arrays.asList(array);
list.remove("Apple");
list.forEach(s -> System.out.println(s));
}
asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。因此,使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出
UnsupportedOperationException
异常。
2、转换为可变集合
@Test
public void arrayToListTest() {
String[] array = new String[]{"Apple", "Xiaomi", "Huawei", "Vivo", "Oppo"};
// 从数组转为集合,集合list长度不可更改
// List<String> list = Arrays.asList(array);
// 从数组转为集合,集合list长度可更改
List<String> list = new ArrayList<>(Arrays.asList(array));
list.remove("Apple");
list.add("one+");
list.forEach(s -> System.out.println(s));
}
总结:如果转换后的List只是用来遍历展示,可以用Arrays.asList();如果转换后的List还涉及元素得到添加或移除,此刻就必须new 一个java.util.ArrayList,然后包裹要转换的数组对象。
二、集合转为数组
@Test
public void listToArrayTest() {
List<String> list = new ArrayList<>(2);
list.add("Xiaomi");
list.add("Huawei");
String[] array = list.toArray(new String[0]);
System.out.println(Arrays.toString(array));
}
直接使用
toArray
的无参方法存在问题,此方法返回值只能是Object[]类,若强转其他类型数组将出现ClassCastException
错误。因此使用toArray
带参方法,数组空间大小等于0时,动态创建与size相同的数组,性能最好。
网友评论