数组转为集合的方法
Arrays.asList()方法转为集合
@Test
void testAsList() {
String[] str = new String[] {
"qqq", "kkk" };
List list = Arrays.asList(str);
list.add("lqk");
// str[0]="lqk";
list.stream().forEach(System.out::println);
}
结果:报错:java.lang.UnsupportedOperationException
@Test
void testAsList() {
String[] str = new String[] {
"qqq", "kkk" };
List list = Arrays.asList(str);
// list.add("lqk");
str[0]="lqk";
list.stream().forEach(System.out::println);
}
结果:集合也被修改,说明数组str[]与集合list底层都是原数组
第一种情况:list.add(“lqk”); 运行时异常。
第二种情况:str[0] = “lqk”; 那么 list.get(0)也会随之修改。
说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList
体现的是适配器模式,只是转换接口,后台的数据仍是数组。
asList源码
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);//调用下面的ArrayList(E[] array)构造函数
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java