Arrays 和 Collections 通常用来实现从数组到列表的转换数组和List之间的转换总结,非常方便,但是使用时还是要小心谨慎。
String[] names = new String[]{"name1","name2","name3"};
int[] ages = {1,3,5};
List nameList = Arrays.asList(names);
List ageList = Arrays.asList(ages);
System.out.println("nameList的大小:"+nameList.size());
System.out.println("ageList的大小:"+ageList.size());
运行结果:
nameList的大小:3
ageList的大小:1
佷显然,这超出了我们的预期,ageList为什么变成了1?
看源码分析:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
要求传入的参数是一个任意参数的泛型T,注意这里的T表示的是一个类类型,而对于int[] ages = {1,3,5} 很显然,这是一个基本类型的数组,之所以在编译期没报错只是因为在这里ages被当成一个数组类型的单例来看待了。也就是说这里的打印结果1,实际上是这个ages数组对象被当作了List的元素放到了List中去了。