0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java集合API的改进介绍

OSC开源社区 来源:OSC开源社区 2024-11-22 11:12 次阅读

简介

本文我们将探讨不同 jdk 版本中各类的起源,以及新引入的类和接口背后的目的。我们将分析之前版本存在的问题,以及为何需要引入新的类或接口。此外,我们还将介绍集合类和接口中的新特性。文章将逐一解答这些问题。

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

Java 集合 API 的改进

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

JDK 1.0 中的集合类

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

Vector 类的问题

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

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

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

无法按顺序存储元素

Hashtable 类的问题

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

Hashtable 无法按顺序存储条目

Enumeration 的问题

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

JDK 1.2 中的集合类

在 JDK 1.2 中,Sun Micro-system 引入了 ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、Iterator 和 ListIterator。

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

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

HashSet:不允许有重复元素。

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

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

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

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

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

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

JDK 1.4 中的集合类

在 JDK 1.2 中,Sun Microsystems 引入了 LinkedHashSet 和 LinkedHashMap。

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

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

JDK 1.5 中的集合类

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

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

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

JDK 1.6 中的集合类

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

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

b43c5758-a32f-11ef-93f3-92fbcf53809c.jpg

JDK 1.8 中的集合类

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

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

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

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

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

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

b44867be-a32f-11ef-93f3-92fbcf53809c.png

Java 9 中的集合增强

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

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

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

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

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

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

Java 10 中的集合增强

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

Java 11 中的集合增强

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

Java 21 中的集合增强

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

b45babb2-a32f-11ef-93f3-92fbcf53809c.png

SequencedCollection 序列集合

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()

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104702
  • API
    API
    +关注

    关注

    2

    文章

    1499

    浏览量

    61962

原文标题:Java集合API的改进

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Stream API原理介绍

    Stream APIJava 8 中最重要的新特性之一,它是处理集合和数组的一种新方式。它提供了一种简单、灵活和可读的方式来处理集合和数组中的元素,从而使代码更加简洁、高效和易于
    的头像 发表于 09-30 15:31 704次阅读

    java集合干货系列

    `  前言  Java集合java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java
    发表于 12-14 15:11

    Java语言的特性介绍

      Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍Java语言的特
    发表于 01-20 14:44

    详细介绍Java泛型、注解、并发编程

    介绍Java泛型、注解、并发编程、数据传输与序列化、高效IO、容器集合、反射与类加载以及JVM重点知识线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种引用类型、GC
    发表于 08-20 06:09

    如何用java映射创建java对象和调用java对象呢

    java是一种解析语言,java程序是通过java虚拟机解析.class的方式运行起来。因此,java中就存在java映射的概念。下面
    发表于 04-11 14:43

    java项目设计集合

    java项目设计集合:Java项目演示.ppt任务分配.doc项目开发规范.doc超市货物管理.doc项目所涉及的数据结构.doc需求说明书.doc
    发表于 05-16 17:54 46次下载
    <b class='flag-5'>java</b>项目设计<b class='flag-5'>集合</b>

    java程序集合1

    java程序集合1 部分代码如下: create database address;use address;create table book(ID INT(4) AUTO_INCREMENT
    发表于 04-02 15:01 16次下载

    高手总结java常用API(免费下载)

    高手总结java常用API(免费下载)。
    发表于 11-06 11:27 0次下载

    使用Java API技巧分析

    本文介绍了一些关于Java API安全和性能方面的简单易用的技巧,其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议。 程序员都喜欢使用
    发表于 09-27 14:09 3次下载

    JAVA集合类汇总

    多数情况下使用。 二、层次关系 如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口 Collection 接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是 Set和List 。
    的头像 发表于 01-16 11:50 3781次阅读
    <b class='flag-5'>JAVA</b><b class='flag-5'>集合</b>类汇总

    Java的iterator和foreach遍历集合源代码

    Java的iterator和foreach遍历集合源代码
    发表于 03-17 09:16 9次下载
    <b class='flag-5'>Java</b>的iterator和foreach遍历<b class='flag-5'>集合</b>源代码

    如何利用Stream API来优化Java代码

    使用Stream API优化代码 Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 放大招,流
    的头像 发表于 07-26 14:30 1294次阅读

    基于Java的接口快速开发框架——magic-api

    magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等
    发表于 07-19 11:42 906次阅读
    基于<b class='flag-5'>Java</b>的接口快速开发框架——magic-<b class='flag-5'>api</b>

    OpenVINO™ Java API应用RT-DETR做目标检测器实战

    本文将从零开始详细介绍环境搭建的完整步骤,我们基于英特尔开发套件AIxBoard为硬件基础实现了Java在Ubuntu 22.04系统上成功使用OpenVINO™ Java API,并
    的头像 发表于 03-18 15:04 794次阅读
    OpenVINO™ <b class='flag-5'>Java</b> <b class='flag-5'>API</b>应用RT-DETR做目标检测器实战

    Java 23功能介绍

    Java 23 包含全新和更新的 Java 语言功能、核心 API 以及 JVM,同时适合新的 Java 开发者和高级开发者。从 IntelliJ IDEA 2024.2 开始已支持
    的头像 发表于 12-04 10:02 193次阅读
    <b class='flag-5'>Java</b> 23功能<b class='flag-5'>介绍</b>