范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java。util。ArrayList原理详细介绍

  本文旨在介绍 java.util.ArrayList 集合类的实现原理;
  概要
  ArrayList 底层是基于数组实现的,集合所有的操作都是对数组的操作,即是由数组实现的各种方法功能。
  内部封装了一个动态再分配的数组,即ArrayList 大小是可变的;
  是非线程安全的,java.util.Vector 是线程安全的;
  ArrayList 不是 java 程序设计语言的一部分,是某人编写放进标准库的一个使用工具;
  ArrayList 中元素是有序可重复的;
  主要字段介绍// 数组初始容量,即内部数组初始大小,final修饰 private static final int DEFAULT_CAPACITY = 10;  // final 修饰,表示不可变数组对象 // 如果是有参构造 ArrayList 对象时,空数组时用该数组对象为 elementData 赋值 private static final Object[] EMPTY_ELEMENTDATA = {};  // final 修饰,表示不可变数组对象 // 如果是无参构造 ArrayList 对象时,用该数组对象为 elementData 赋值 // elementData 赋值为 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 时,初始容量为 DEFAULT_CAPACITY private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};  // 内部数组,用于实现 ArrayList 的各种功能 transient Object[] elementData;  // 数组中元素个数,而不是数组容量大小 private int size;  // 集合被修改次数,主要使用是在 Iterator,是防止在迭代的过程中集合被修改 // java.util.AbstractList.modCount 是定义在抽象父类中 protected transient int modCount = 0;
  构造
  1、空构造函数
  2、指定集合容量
  指定的容量其实就是底层数组的大小;
  3、指定集合构造 ArrayList
  1)指定集合为空,则构造空数组的 ArrayList 对象;
  2)指定集合类型是 ArrayList,则直接转成数组赋值给内部数组对象;
  3)指定集合类型是非 ArrayList,则转成数组后,copy元素来创建内部数组对象;
  主要方法解析
  1、添加元素 add(E e)
  1)modCount 加 1;
  2)容量超过数组大小则扩容;
  3)在数组后面的空位置插入元素;
  2、添加元素 add(int index, E element)
  1)在指定索引位置插入指定的元素;
  2)index 取值范围为 [0, size],超出则抛下标越界异常;
  3)其他同 add(E e) 方法;
  3、查询元素 get(int index)
  1)获取指定索引位置的元素;
  4、替换元素 set(int index, E element)
  1)替换指定索引位置的元素为指定的元素,并返回旧元素(即被替换的元素);
  5、删除元素 remove(int index)
  1)删除指定索引位置的元素,并返回被删除的元素;
  6、删除元素 remove(Object o)
  1)删除集合中第一个和指定元素相等的元素;
  2)入参对象可以为 null;
  7、获取大小 size()
  1)取集合大小,即集合中有多少个元素;
  8、判断集合是否为空 isEmpty()
  1)如果集合中元素个数为0,则表示集合是空的;
  9、获取指定元素在集合中索引位置 indexOf(Object o)
  1)入参对象可以为 null,为 null 时取内部数组中第一个为 null 的元素的索引;
  2)入参对象不为 null 时,取内部数组中第一个和入参对象相等的元素的索引;
  10、获取指定元素在集合中最后的索引位置 lastIndexOf(Object o)
  1)从后往前找,从内部数组中找出第一个和指定元素相同的索引位置;
  2)其他同 indexOf(Object o);
  11、集合中是否包含指定元素 contains(Object o)
  1)调用了 indexOf(Object o) 方法,如果返回的索引值大于或等于0,则说明包含指定的元素;
  2)入参对象可以为 null;
  12、清空集合 clear()
  1)其实就是循环内部数组,把前 size 个元素赋值为 null;
  13、集合转数组 toArray()
  1)把 ArrayList 集合转成 Object[] 集合;
  2)返回类型是 Object[];
  3)其实是根据集合内部数组,复制出一个新的数组返回;
  14、集合转数组 toArray(T[] a)
  1)该方法会返回指定类型的元素数组;
  2)传入的数组 T[] 的长度小于集合大小时,根据集合内部数组,复制出一个新的数组返回,并强转成类型 T[],返回的数组和集合内部数组相同;
  3)如果传入的数组的长度大于或等于集合大小时,把集合内部数组所有元素复制到数组 T[] 中,并返回 T[];
  15、取交集 retainAll(Collection<?> c)
  1)a.retainAll(b) 把a集合中 未 出现在b集合中的元素删除,相当于取两个集合的交集;
  16、获取迭代器 iterator()
  1)java.util.ArrayList.Itr 是 ArrayList 的内部类,实现了 java.util.Iterator迭代器接口;
  17、获取子集 subList(int fromIndex, int toIndex)
  1)java.util.ArrayList.SubList 是 ArrayList 的内部类;
  18、给集合中元素排序 sort(Comparator<? super E> c)
  1)必须指定用于元素比较的比较器;
  2)内部调用了 java.util.Arrays.sort(T[], int, int, Comparator<? super T>) 工具类排序方法;
  19、replaceAll(UnaryOperator operator)
  1)把集合中所有的元素都进行相同的操作;
  20、removeIf(Predicate<? super E> filter)
  1)把集合中符合条件的元素全部删掉;

室温超导新发现已被证伪?多个中国团队重复实验无法验证美国罗切斯特大学物理学教授迪亚斯(Dias)发布室温超导新材料研究成果后,不足十日之内,已有三个中国团队对迪亚斯的近常压室温超导材料进行了重复实验,均未能复现其原成果。闻海虎团队论山东乳山探获一大型金矿床查明金金属量近50吨来源央视新闻客户端总台记者3月18日从山东省地矿局获悉,近日,山东乳山市崖子镇西涝口村探获一处特大型金矿床,查明金金属量近50吨。据了解,该矿床由山东省地矿局第六地质大队勘查,3月陈码头儿子落网,涉嫌引援贪污,单笔2500万,国脚资产被冻结老话说一人得道鸡犬升天,在中国足协看来也是如此的,比如说足协前掌门人陈码头这边。在李铁的事情爆发后,受到牵连的秘书长刘奕落网了,之后曝出刘奕涉及的单笔就超过百万,当时有媒体报道陈码财富守攻传净值化时代下的资产配置当如何作为?视频加载中本期看点1。为什么理财产品的收益不稳了?2。产品净值化转型有什么好处?3。净值化管理转型下,投资者该如何应对?随着资管新规落地,刚性兑付打破,银行理财净值化转型后实现风险应云而生,智能湖仓如何成为构建数据能力的最优解?科技云报道原创。随着新一轮科技革命和产业革命深入交织,数字经济正在成为重组全球要素资源重塑全球经济结构改变全球竞争格局的关键力量。在这一过程中,作为数字化底座的云,已经不仅仅局限于用户无法激活Win10微软客服神操作运行盗版脚本秒破解来源快科技你搜罗的那些所谓Windows10破解激活方法,微软不仅门儿清,甚至比你用的还溜。用户TroubleChute日前分享称,他在微软商店花200欧元买了一个Windows1致命暴跌!超级巨头彻底崩了,最惨亏损70亿!六大央行紧急救市,什么信号?美国政坛炸锅,特朗普即将被捕?全球金融市场注定不平静。处于风暴中心的瑞士信贷,仍在遭遇市场猛烈抛售。3月20日晚间,美股开盘后,瑞信股价一度暴跌超55,第一共和银行一度大跌超21。消息面上,瑞银最新宣布,将以32023年养老金上调,四类人养老金会上涨,4个信号释放利好导读2023年养老金上调,四类人养老金会上涨,4个信号释放利好点击上方三农讲座头像,可关注三农讲座更多精彩内容。点击下方音频可以收听本篇全部内容,本篇文章阅读时长大约需要分钟秒2097的股市收益都来自这点蓝字关注,不迷路来源券商中国临近年底的时候,很多投资者在朋友圈里迫不及待地大声向2022年告别,2022,再也不见。对于A股投资者来说,2022年是艰难的一年,超过三分之一的个股副部级老虎崔茂虎被查!调入中央才九个月,能力很强履历惊人两会过后,国家反腐的姿态依旧强硬,相继有很多高官落马,其中更有副部级的大老虎。由此也可见,反贪反腐之路任重道远,并不是一朝一夕可以完成的事情。3月18日,中央纪委国家监委网站又曝出佳缘科技未来23年公司人员预计将持续大幅增长e公司讯,佳缘科技在机构调研时表示,公司现阶段主要的竞争壁垒是技术壁垒,网络信息安全领域客户对技术产品要求极高,在满足百分之百自主可控的前提下,需具备高可靠性高转化速率适应复杂的电
全国人大代表马豹子鼓励归雁游子回乡,创业带富一方乡邻全国人大代表马豹子大河报豫视频记者黄婷刘瑞朝文受访者供图随着中西部地区承接沿海地区产业转移的进行,曾经的入城潮已渐有向回乡潮转变的趋势。全国两会期间,全国人大代表平顶山市宝丰县赵庄专访最高法民一庭庭长陈宜芳立足司法职能鼓励数字经济投入,促进数字经济和实体经济深度融合作者丨王俊编辑丨林虹2023年把经济稳增长放置在首要位置,作为司法机关该如何助推稳经济一揽子政策措施在司法领域落实落地,为促消费稳就业提供司法服务保障?今年全国两会期间,21世纪经稳进之势就是信心之源来源中国经济网从春天出发,向未来起航。今年的政府工作报告字字铿锵,传递中国奋进足音,如春之音符,振奋人心。过去一年,我国经济发展遇到疫情等国内外多重超预期因素冲击。面对经济新的下行立起中国军医好样子陈威巍近照。黄博晟摄这个检验数据明显异常,是不是仪器出了故障?全国两会前夕,记者前往解放军总医院第五医学中心感染病医学部研究所,采访全国人大代表该所主任技师陈威巍。当时,她正和塞拉湖南省气象局发布霾黄色预警湖南省气象台2023年3月11日15时53分发布霾黄色预警预计11日20时至12日20时,长沙(雨花区天心区芙蓉区开福区长沙县望城区浏阳市宁乡市)株洲大部分地区(醴陵市渌口区天元区两会即将结束,深夜又传来三个良心提案,不出意外真要开始调整了前言导语伴随着两会召开,各行各业的老百姓,无一人不关注两会的动态,老百姓关注最多的莫过于,养老医疗教育住房等这些方面,大家都希望委员代表们能将好的提案递交,可能每个委员代表站的角度最高法民三庭庭长监督支持反垄断行政执法,促进标准统一两会高见近年来,平台经济迅速发展,新业态新模式层出不穷。但与此同时,二选一大数据杀熟等平台经济领域涉嫌垄断问题也随之愈演愈烈。今年全国两会,政府工作报告提出加强反垄断和反不正当竞争各地局长变装秀文旅种草新玩法香港文体旅局局长杨润雄(中)副局长刘震(右一)及政治助理招文亮(左一)齐齐面对镜头,通过录制视频向全国网友推介香港旅游。图片来源香港文体旅局近期,国内文旅消费强势复苏。作为消费增长中美之争,分庭抗礼才是取胜之道!目前的世界局势,美国的对华的极限施压,甚至通过美国二流政客的放话,要对华发动核战。那怎么办?用友好活动感动美国?用甜言蜜语化解矛盾?呵呵,会管用吗?韬光养晦是伟大的外交策略,庇佑了李铁再出大鱼,足协前高层或被锁定,曾让米卢做检讨,涉2亿赞助来源东球弟李铁的事情如同一根针一样,虽然李铁这根针本身也是锈迹斑斑,可是他着实的将足协身上依附多年的脓包给弄破了,而且出人意外的带出了更多的脓肿地方,给了中国足球一个刮骨疗伤,猛药中国天眼探月探火深海钻探第二场代表通道讲述中国创新底气科技日报记者?操秀英?吴纯新2001年,中国的探月工程刚刚起步,为解决38万公里地月远距离测控通信难题,我有幸加入嫦娥一号研制团队。在3月7日下午举行的十四届全国人大一次会议第二场