65.避开基本类型数组转换列表的陷阱

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中去了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容