Java集合API的改进jdkdefaulthashmap

我们将逐步学习Java集合类的优化过程,并按版本逐一对比分析。主要讨论的焦点将包括JDK1.0、1.2、1.4、1.5、1.6、1.8、9、10、11和21版本的Java集合功能

Java集合API的改进

Java集合API在多年中经历了显著改进,引入了新功能、增强和优化,以提高开发者的生产力、改善性能,并适应修订的编程模式和需求。它将帮助开发者利用Java集合的力量构建更健壮、高效和可维护的应用程序。

JDK1.0中的集合类

在JDK1.0中,有四个类Vector、Stack、Hashtable和Properties。此外,还有一个名为“Enumeration”的接口,用于以简单的方式遍历值。进一步分类,Stack是Vector的子类,Properties是Hashtable的子类。

Vector类的问题

Vector是线程安全的,即Vector中的所有方法都是同步的。因此,它不适合单线程环境。

由于它在内部基于数组工作,插入和删除操作非常慢。

它允许在其中添加重复元素

无法按顺序存储元素

Hashtable类的问题

Hashtable是线程安全的,即Hashtable中的所有方法都是同步的。因此,它不适合单线程环境。

Hashtable无法按顺序存储条目

Enumeration的问题

无法删除元素且方法名称过长

JDK1.2中的集合类

在JDK1.2中,SunMicro-system引入了ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、Iterator和ListIterator。

ArrayList:用于提供单线程环境下的解决方案,因为ArrayList中的方法不是同步的。

LinkedList用于提供更快的元素插入和删除。

HashSet:不允许有重复元素。

TreeSet:用于按排序顺序存储元素。

HashMap:提供单线程环境下的解决方案,因为HashMap中的方法不是同步的。

TreeMap:用于按顺序存储键值对。

Iterator:用于解决枚举问题。同时还有一个专门处理列表的类ListIterator。

HashSet的问题:它不能保持插入顺序,即它不会按照元素添加到集合中的顺序存储元素。

HashMap的问题:像HashSet一样,它不能保持插入顺序。

JDK1.4中的集合类

在JDK1.2中,SunMicrosystems引入了LinkedHashSet和LinkedHashMap。

LinkedHashSet:用于解决HashSet中插入顺序的问题。它按照元素添加到集合中的顺序存储元素。

LinkedHashMap:用于解决HashMap中插入顺序的问题。它还按照元素添加到集合中的顺序存储元素。

JDK1.5中的集合类

for-Each循环:作为替代迭代器进行迭代的另一种方法

CopyOnWriteArrayList:引入以允许在修改底层列表的情况下安全地迭代元素。

CopyOnWriteArraySet:它使用内部CopyOnWriteArrayList进行所有操作。因此,它具有与该列表相同的基本属性。

JDK1.6中的集合类

NavigableSet:作为扩展了导航方法的有序集合,用于报告给定搜索目标的最近匹配。

NavigableMap:作为扩展了导航方法的SortedMap,返回给定搜索目标的最近匹配项。

Java集合框架也有新更新,以支持lambda表达式、流和聚合操作。

stream()作为父接口Collection的默认方法:返回一个以该集合为源的顺序Stream。

parallelStream()作为父接口Collection的默认方法:返回一个可能并行的Stream,以这个集合作为其源。

spliterator()作为父接口Collection的一个默认方法:创建一个遍历此集合中元素的Spliterator

removeIf(Predicatefilter)作为父接口Collection的默认方法:移除满足给定谓词的所有元素。

同样重要的是,这里的一个显著点是所有新添加的方法都是接口Collection内部的默认方法。这是使用默认方法的最佳示例。

新增用于创建不可变列表、集合和映射的of()静态工厂方法介绍。这些方法包括:List.of(),Set.of(),Map.of(),Map.ofEntries()

Arrays.mismatch():新增方法以查找两个数组中第一个不匹配的索引。

Arrays.compare():添加了新方法来比较提供的两个数组中的元素。

为Arrays.equals()添加了更多重载方法。

Enumeration.asIterator():添加了返回java.util.Iterator实例的新方法。

此外,在StreamAPI中添加了一些方法,如dropWhile、takeWhile和ofNullable。

Java10中的集合增强

引入了List.copyOf()、Set.copyOf()和Map.copyOf(),用于创建现有集合的不变副本。

Java11中的集合增强

Collection.toArray(IntFunction):添加了新的默认方法,允许将集合的元素转移到新创建的具有所需运行时类型的数组中。新方法是现有toArray(…)方法的重载变体。

Java21中的集合增强

Java21在集合框架中引入了三个新接口:SequencedCollection、SequencedSet和SequencedMap。这些新的集合接口通过新库提供的默认方法,使我们能够访问其第一个和最后一个元素。该功能还允许我们通过简单的调用方法来获取集合的反转视图。

defaultvoidaddFirst(Ee)defaultvoidaddLast(Ee)defaultEgetFirst()defaultEgetLast()defaultEremoveFirst()defaultEremoveLast()SequencedCollectionreversed()SequencedSet序列集合

SequencedSetreversed()SequencedMap序列映射

defaultMap.EntryfirstEntry()defaultMap.EntrylastEntry()defaultMap.EntrypollFirstEntry()defaultMap.EntrypollLastEntry()defaultVputFirst(Kk,Vv)defaultVputLast(Kk,Vv)SequencedMapreversed()defaultSequencedSet>sequencedEntrySet()defaultSequencedSetsequencedKeySet()defaultSequencedCollectionsequencedValues()

THE END
1.JAVA所定义的版本中不包括()JAVA所定义的版本中不包括() A、JAVA2EE B、JAVA2Card C、JAVA2ME D、JAVA2HE E、JAVA2SE 点击查看答案进入题库练习 查答案就用赞题库小程序 还有拍照搜题 语音搜题 快来试试吧 无需下载 立即使用 你可能喜欢 问答题 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 参考答案:程序分...https://m.ppkao.com/mip/tiku/shiti/7447508.html
2.Java版本特性简介1. **1998年**:Java 2平台(J2SE、J2EE、J2ME)发布,标志着Java开始针对不同应用领域进行细分。其中,J2SE(Java 2 Standard Edition)是面向桌面应用的版本。 1. **2000年至2006年**:Java经历了多次更新,包括Java 5(也称为JDK 1.5)引入的泛型、枚举和注解等特性,以及后续版本在性能、安全性和易用性方面的改进...https://www.jianshu.com/p/1fa2301b68a1
3.JAVA试题及答案(50道选择题)java选择题及答案.docx选择题 1、JAVA所定义的版本中不包括:(D ) A、 JAVA2 EE B、 JAVA2 Card C、 JAVA2 ME D、 JAVA2 HE E、 JAVA2 SE 2、 下列说法正确的是( A ) A、 JAVA程序的main方法必须写在类里面 B、 JAVA程序中可以有多个 main方法 C、 JAVA程序中类名必须与文件名一样 {}(大括号 )括D、 JAVA {}(...https://max.book118.com/html/2020/1030/7201140136003012.shtm
1.Java8发行版更改要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。 包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2025 年 1 月 21 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u431)。 Java 管理服务(向所有用户...http://www.java.com/zh_CN/download/faq/release_changes.xml
2.JAVA面试题(5)java所定义的版本中不包括1、 JAVA所定义的版本中不包括:( ) A、 JAVA2 EE B、 JAVA2 Card C、 JAVA2 ME D、 JAVA2HE E、 JAVA2 SE 答案:D 解析: Java企业版:JEE 适用于创建服务器应用程序和服务的Java 平台企业版 Java标准版: JSE 适用于桌面系统的Java 平台标准版 ...https://blog.csdn.net/qq_15127715/article/details/102492652
3.JAVA所定义的版本中不包括()JAVA所定义的版本中不包括() AJAVA2EE BJAVA2Card CJAVA2ME DJAVA2HE EJAVA2SE 正确答案 答案解析 略 真诚赞赏,手留余香 小额打赏 169人已赞赏https://www.examk.com/p/514721303.html
4.JAVA所定义的版本中不包括:()AJAVA2EEBJAVA2CardCJAVA2...JAVA所定义的版本中不包括:()A、JAVA2 EEB、JAVA2 CardC、JAVA2 MED、JAVA2 HEE、JAVA2 SE2、下列说 JAVA所定义的版本中不包括:() A、 JAVA2 EE B、 JAVA2 Card C、 JAVA2 ME D、 JAVA2 HE E、 JAVA2 SE 2、 下列说法正确的是() A、 JAVA程序的main方法必须写在类里面 B、 JAVA程序中可以有...https://www.educity.cn/souti/1EFC5D9C.html
5.各大厂面试合集:Java后端最全面试攻略(25个专题技术点)8、构造方法能不能重写?能不能重载? 9、内部类与静态内部类的区别? 10、Static关键字有什么作用? 11、final在java中的作用,有哪些用法? 12、String str=”aaa”,与String str=new String(“aaa”)一样吗? 13、讲下java中的math类有那些常用方法? https://maimai.cn/article/detail?fid=1732846678&efid=RlrnsBEfP8SKpI4LZ_q9UQ
6.怎么免费安装注册SlickEditPro代码编辑器SlickEdit安装步骤支持多种编程语言:SlickEdit Pro支持多种编程语言,可以满足不同开发需求。 插件扩展支持:SlickEdit Pro支持插件扩展,可以安装各种插件来扩展编辑器的功能,例如代码格式化、自动化构建等。 可定制性强:SlickEdit Pro非常灵活且可自定义,你可以完全控制编程环境,包括模拟器、菜单、字体、颜色等。 https://www.jb51.net/softjc/912963.html
7.www.ptzfcg.gov.cn/upload/document/20180724/0279275ee54644f6...※根据上述资格要求,投标文件中应提交的“投标人的资格及资信证明文件”详见招标文件第四章。 7、报名 7.1报名期限:详见招标公告或更正公告(若有),若不一致,以更正公告(若有)为准。 7.2报名期限内,供应商应通过福建省政府采购网上公开信息系统的注册会员账号(免费注册)对本项目进行报名(请根据项目所在地,登录对应...http://www.ptzfcg.gov.cn/upload/document/20180724/0279275ee54644f6adb79e806e1b3734.html
8.青少年网络信息安全知识竞赛题库(中职(学)版)网络安全39. 下列关于访问控制模型说法不准确的是 。 ( C ) A. 访问控制模型主要有 3 种:自主访问控制、强制访问控制和基于角色的访问控制 B. 自主访问控制模型允许主体显式地指定其他主体对该主体所拥有的信息资源是 否可以访问 C. 基于角色的访问控制 RBAC 中“角色”通常是根据行政级别来定义的 ...https://www.wxjsxy.com/xxglzx/wlaq/content_11087
9.华为HCIP高级网络工程师刷题日记(2)51CTO博客8.请将策略路由和路由策略与其所用的工具进行匹配。 9. 以下关于N+1备份的描述,正确的是哪一项? 10.请将不同的流量传输方向和具体的域间通信过程相匹配。 11.IPv6的地址类型不包括以下哪一项? 12.在SSM中,需要用到IGMP以下哪一个版本? 13. OSPF通过LSA来交换链路状态,以下关于LSA的描述,正确的是哪一项? https://blog.51cto.com/u_15612474/6236301
10.绿盟考试2[复制]40、App测试的风险点不包括() A 未验证SSL证书有效性B App程序明文保存用户密码C敏感数据网络传输临时未加密D App测试不需要测试机解析:知识点:通过几大安全公司的漏洞扫描器发现,很多Androida平台中的APP都存在https使用不当的风险,主要体现在app没有安全的使用google提供的API,只是简单的调用https协议,并未对SSL证...https://www.wjx.cn/xz/274263011.aspx
11.实用cad计算机辅助设计认证考试试题6. 填充图案是在哪个文件中定义的? A. Acad.pgp B. Acad.lin C. Acad.pat D. Acadiso.pat 答案:CD 7. 设定图层的颜色、线型、线宽后,在该图层上绘图,下面哪些描述是错误的? A. 必定使用图层的这些特性 B. 不能使用图层的这些特性 C. 同时使用图层的所有这些特性,不能单项使用 D. 可以使用图层的这...https://www.yjbys.com/edu/EDA/276333.html
12....书籍资源包括C/C++JavaPythonGo语言数据结构与算法...超过1000本的计算机经典书籍、个人笔记资料以及本人在各平台发表文章中所涉及的资源等。书籍资源包括C/C++、Java、Python、Go语言、数据结构与算法、操作系统、后端架构、计算机系统知识、数据库、计算机网络、设计模式、前端、汇编以及校招社招各种面经~ - wantdeehttps://github.com/wantdeeptester/CS-Books
13.Java基础面试题基础语法入门汇总(1)第16题:java语言使用的字符码集是() A ASCII B BCD C DCB D Unicode 答案:D 解析:Java语言使用的是Unicode字符集,ASCII是国际上使用最广泛的字符编码 第17题:JAVA所定义的版本中不包括:( ) A、 JAVA2 EE B、 JAVA2 Card C、 JAVA2 ME D、 JAVA2HE ...https://www.panziye.com/javainterview/4573.html
14.第2部分管理InstantMessaging(SunJavaSystemInstant...Solaris 9 OS 包括 Solaris Logical Volume Manager (LVM)。 Solaris 10 OS 支持所有版本的 Solaris 10 OS。 Sun Cluster 3.1 必须在群集中的所有节点上安装和配置 Sun Cluster 软件。 要安装 Sun Cluster,则使用 Communications Suite 安装程序,遵循《Sun Java Communications Suite 5 Installation Guide》中的...https://docs.oracle.com/cd/E19957-01/820-0529/6nc8udtna/index.html