在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2967

    瀏覽量

    104749
  • API
    API
    +關注

    關注

    2

    文章

    1500

    瀏覽量

    62012

原文標題:Java集合API的改進

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Stream API原理介紹

    Stream APIJava 8 中最重要的新特性之一,它是處理集合和數組的一種新方式。它提供了一種簡單、靈活和可讀的方式來處理集合和數組中的元素,從而使代碼更加簡潔、高效和易于
    的頭像 發表于 09-30 15:31 ?714次閱讀

    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 ?3788次閱讀
    <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 ?1299次閱讀

    基于Java的接口快速開發框架——magic-api

    magic-api 是一個基于Java的接口快速開發框架,編寫接口將通過magic-api提供的UI界面完成,自動映射為HTTP接口,無需定義Controller、Service、Dao、Mapper、XML、VO等
    發表于 07-19 11:42 ?915次閱讀
    基于<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 ?808次閱讀
    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 ?206次閱讀
    <b class='flag-5'>Java</b> 23功能<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 日韩免费高清一级毛片| 女人张开腿让男人桶免费最新| 免费日韩网站| 亚洲一区二区黄色| 在线观看免费观看| 亚洲欧洲色| 免费观看黄色网址| 天天操天天噜| 日本一区二区三区四区视频 | 色01视频| 91色在线播放| 欧美xxxx做受欧美88bbw| 完整日本特级毛片| 成人精品视频一区二区三区| 午夜看黄| 色人人| 午夜撸| 李丽莎尤物福利视频| 久久综合九色综合97婷婷群聊 | 九九99视频在线观看视频观看| 日韩欧美在线第一页| www.爽| 国产高清色播视频免费看| 1024你懂的国产日韩欧美| 天天色综合色| 午夜在线观看免费高清在线播放 | 男女性接交无遮挡免费看视频| 免费大片黄日本在线观看| 国产自在自线午夜精品视频在| 亚洲伊人成人| 18岁女人毛片| 男女视频免费观看| 狠狠激情五月综合婷婷俺| 5252欧美在线观看| 日本三级网址| 免费午夜视频在线观看| 亚洲第二色| 午夜激情影视| 一级毛片q片| 永久手机看片福利盒子| 饥渴少妇videos|