Arrays.asList()使用
程序员文章站
2024-03-06 23:41:14
...
public class ArraysAsListTest {
public static void main(String[] args) {
int[] a = {1,2,3};
Integer[] b = {1,2,3};
List listA = Arrays.asList(a);
List listA1 = Arrays.asList(1,2,3);
List listB = Arrays.asList(b);
System.out.println(listA.size());//out:1
System.out.println(listA1.size());//out:3
System.out.println(listB.size());//out:3
}
}
listA的长度为啥是1?
源码中,asList接收的是一个泛型变长参数,而int类型是属于基本类型,基本类型不能泛型化的,也就是listA中是把int类型的数组作为了T的类型。listA1和listB一个是进行了自动打包一个本来就是包装类型
使用Arrays.asList后使用add或remove后抛异常?
public class ArraysAsListTest {
public static void main(String[] args) {
List<String> pets = Arrays.asList("cat","dog");
pets.add("what");
}
}
Arrays的asList()方法使用的ArrayList类是一个内部定义的类,不是java.util.ArrayList类,这个静态内部类里面存储数组的变量a是final修饰的,不能增加和删除
public class Arrays {
.......
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
......
}
}
如果使用Arrays.asList()后需要对数组进行增加和删除,可以使用下面这个方法
List<String> listString = new ArrayList<String>(Arrays.asList("a", "b", "c"));