asList存在的问题

asList存在的问题1.避开基本类型数组转换列表陷阱问题实例:publicclassClient{publicstaticvoidmain(String[]args){int[]data={1,2,3,4,5};Listlist=Arrays.asList(data);System.out.println(li

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1. 避开基本类型数组转换列表陷阱
问题实例:

public class Client {
    public static void main(String[] args) {
        int[] data = { 1, 2, 3, 4, 5 };
        List list = Arrays.asList(data);
        System.out.println(list.size());
        System.out.println(data.equals(list.get(0)));
    }
}

Jetbrains全家桶1年46,售后保障稳定

结果为1 true
在java中数组是一个对象,是可以泛型化的,也就是说我们的例子是把一个int类型的数组作为了T的类型,所转换
后在List中就只有一个类型为int数组的元素
解决实例:

public class Client {
    public static void main(String[] args) {
        Integer[] data = { 1, 2, 3, 4, 5 };
        List list = Arrays.asList(data);
        System.out.println(list.size());
        System.out.println(data.equals(list.get(0)));
    }
}

结果 5 false
注意:原始类型数组不能作为asList的输入参数,否则会引起程序逻辑混乱
2. asList方法产生的List对象不可更改
示例:

enum Week{Sum,Mon,Tue,Wed,Thu,Fri,Sat}
public class Client {
    public static void main(String[] args) {
        //五天工作制
        Week[] workDays={Week.Mon,Week.Tue,Week.Wed,Week.Thu,Week.Fri};
        //转换为列表
        List<Week> list = Arrays.asList(workDays);
        //增加周六也为工作日
        list.add(Week.Sat);
    }
}

结果:Exception in thread “main” java.lang.UnsupportedOperationException 不支持的操作
什么问题呢?
看asList的源码:

public static<T> List<T> asList(T... a){
 return new ArrayList<T>(a);
}

直接new的就是ArrayList啊,见鬼,哈哈问题就出在了ArrayList类上
这个ArraysList是Arrays工具类中的一个内置类(比不是java.Util.ArrayList)
这个内置类,值实现了:
– size 元素数量
– toArray 转为数组,实现数组的浅拷贝
– get:获得指定元素
– set:重置某一元素值
– contains:是否包含某元素

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234774.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • FPGA实现的SPI协议(二)—-基于SPI接口的FLASH芯片M25P16的使用「建议收藏」

    FPGA实现的SPI协议(二)—-基于SPI接口的FLASH芯片M25P16的使用「建议收藏」用flash芯片M25P16来验证下SPI的具体实现吧。

    2022年10月15日
    2
  • spss k均值聚类_K均值法与系统聚类法的异同

    spss k均值聚类_K均值法与系统聚类法的异同总目录:SPSS学习整理SPSS实现快速聚类(K-Means/K-均值聚类)目的适用情景数据处理SPSS操作SPSS输出结果分析知识点目的利用K均值聚类对数据快速分类适用情景数据处理SPSS操作分析——分类——K-均值聚类最大迭代次数根据数据量,分类数量,电脑情况自己调整,能选多点就把上限调高点。SPSS输出结果分析在数据集最右两列保存了该个案的分类结果与到聚类中心的距离。由于没有自定义初始中心,系统设定了三个。迭代9次后中心值不变。最终个三个聚类中心以及他们

    2025年6月29日
    1
  • 数电和模电的理解「建议收藏」

    数电和模电的理解「建议收藏」模电模拟信号:随处可见的自然信号都是模拟信号,模拟信号在时间上和取值上都是连续的,画出来就是一条连续的曲线,可以完全地“模拟”自然信号。模电是指用来对模拟信号进行传输、变换、处理、放大、测量和显示等工作的电路。模拟信号是指连续变化的电信号。模拟电路是电子电路的基础,它主要包括放大电路、信号运算和处理电路、振荡电路、调制和解调电路及电源等。数电数字信号:在时间上和取值上都是不连续的。数字信号存在“采样”,数字信号的值只能在采样点变化。数字信号存在“量化”,数字信号的值只

    2022年6月20日
    47
  • python精彩编程200例-python趣味编程100例(99个)

    【实例简介】python如今很流行,AI的首选工具;python趣味编程100例(99个),学习编程不枯燥。【实例截图】【核心代码】python趣味编程100例(99个)└──python趣味编程100例(99个)├──JCP001.py├──JCP002.py├──JCP003.py├──JCP004.py├──JCP005.py├──JCP006.py├──JCP007.py├…

    2022年4月7日
    52
  • 黑苹果收集

    黑苹果收集

    2021年8月26日
    51
  • 六款大数据采集平台的架构分析

    六款大数据采集平台的架构分析本文转自:《六款大数据采集平台的架构分析》文中介绍了目前业界存在的六款数据采集平台,数据采集平台可以作为数据平台的日志采集系统,个人尝试过Flume+ES+Kibana这样的开源组合,为什么这么选,因为Flume非常灵活且无缝的支持Hadoop生态系统的大部分组件,ES和Kibana也是比较成熟的开源大数据实时搜索展示的组合。随着大数据越

    2022年6月10日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号