资讯专栏INFORMATION COLUMN

千万不要这样使用 Arrays.asList !

Nosee / 925人阅读

摘要:而一开始的设计时用于打印数组而设计的,但开始,有了另一个比较更方便的打印函数于是打印不再使用,而恰巧可用于将数组转为集合。错误用法如果你这样使用过,那你要注意下了。

使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合。

而一开始asList()的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用asList(),而asList()恰巧可用于将数组转为集合。

错误用法

如果你这样使用过,那你要注意下了。

错误一

将基本类型数组作为asList的参数

int[] arr = {1,2,3};
List list = Arrays.asList(arr);
System.out.println(list.size());

猜一下输出结果?

错误二

将数组作为asList参数后,修改数组或List

String[] arr = {"欢迎","关注","Java"};
List list = Arrays.asList(arr);
    
arr[1] = "爱上";
list.set(2,"我");
    
System.out.println(Arrays.toString(arr));
System.out.println(list.toString());

猜一下输出结果?

错误三

数组转换为集合后,进行增删元素

String[] arr = {"欢迎","关注","Java"};
List list = Arrays.asList(arr);
    
list.add("新增");
list.remove("关注");

猜一下输出结果?

你是不是以为上面

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74805.html

相关文章

  • 数组和列表的转换问题

    摘要:以下指代数组,指代数组列表。常见的转换方法是或。在的使用过程中需要注意,当要转换的长度小于的时,不要试图通过传入形参的方式进行转换,虽然这在的长度大于时不会出现问题。所以,极度建议在转换之前初始化的长度为的,并且使用返回值重新给赋值。 Array 和 List 都是我们在开发过程中常见的数据结构。我们都知道 Array 是定长的,List 是可变长。而且,List 的实现类 Array...

    ChristmasBoy 评论0 收藏0
  • 《Java编程思想》-- 持有对象 -- 添加一组元素

    摘要:方法接受一个对象,以及一个数组或是一个用逗号分隔的列表,并将元素添加到中。工作的很好,因为他从第一个参数中了解到了目标类型是什么。 ArrayList.asList() 接受一个数组或是用逗号分隔的元素列表,也可以用可变参数,然后将其转为一个List对象。 Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分隔的列表,并将元素添加...

    tomlingtm 评论0 收藏0
  • Java 8之stream进阶

    摘要:获取每个元素的字符串长度放入新流中,然后转为类型。归约归约就是把整个流归约成一个值的操作,比如求集合中最大的元素所有元素值的和之类的操作。 前言: 上一篇文章 Java 8之stream介绍和使用 中讲解了stream的定义和用法,简单介绍几个最基本最常用的方法,其实stream还有更强大的功能,这篇文章就会给大家介绍stream的进阶用法。 筛选: 在上一篇文章中我们介绍了使用fi...

    Jaden 评论0 收藏0
  • Java Arrays.asList()与Arrays.sort()分析

    摘要:与分析声明文章均为本人技术笔记,转载请注明出处示例源码将数组或者指定个数的对象转换为是的内部类实例,与不是一回事,长度固定,只能遍历访问,不能使用修改集合相关的方法,比如方法会抛出异常适配器模式修改数组内容后,内容也会随之改变,体现适配器模 Java Arrays.asList()与Arrays.sort()分析 声明 文章均为本人技术笔记,转载请注明出处https://segment...

    pkhope 评论0 收藏0
  • java常见十大误区

    摘要:根据拇指规则,最佳做法应该是尽量减少属性的访问级别。通常的,可变对象可用来避免产生过多的对象。如果类中定义了构造函数,那么编译器将不会给它插入默认构造函数。 1、转化数组为ArrayList 通常开发者转化数组为ArrayList的方式为 List list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,而这个ArrayList...

    yintaolaowanzi 评论0 收藏0

发表评论

0条评论

Nosee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<