精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java集合API的改進(jìn)介紹

OSC開(kāi)源社區(qū) ? 來(lái)源:OSC開(kāi)源社區(qū) ? 2024-11-22 11:12 ? 次閱讀

簡(jiǎn)介

本文我們將探討不同 jdk 版本中各類的起源,以及新引入的類和接口背后的目的。我們將分析之前版本存在的問(wèn)題,以及為何需要引入新的類或接口。此外,我們還將介紹集合類和接口中的新特性。文章將逐一解答這些問(wèn)題。

我們將逐步學(xué)習(xí) Java 集合類的優(yōu)化過(guò)程,并按版本逐一對(duì)比分析。主要討論的焦點(diǎn)將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本的 Java 集合功能

Java 集合 API 的改進(jìn)

Java 集合 API 在多年中經(jīng)歷了顯著改進(jìn),引入了新功能、增強(qiáng)和優(yōu)化,以提高開(kāi)發(fā)者的生產(chǎn)力、改善性能,并適應(yīng)修訂的編程模式和需求。它將幫助開(kāi)發(fā)者利用 Java 集合的力量構(gòu)建更健壯、高效和可維護(hù)的應(yīng)用程序。

JDK 1.0 中的集合類

在 JDK 1.0 中,有四個(gè)類 Vector、Stack、Hashtable 和 Properties。此外,還有一個(gè)名為“Enumeration”的接口,用于以簡(jiǎn)單的方式遍歷值。進(jìn)一步分類,Stack 是 Vector 的子類,Properties 是 Hashtable 的子類。

Vector 類的問(wèn)題

Vector 是線程安全的,即 Vector 中的所有方法都是同步的。因此,它不適合單線程環(huán)境。

由于它在內(nèi)部基于數(shù)組工作,插入和刪除操作非常慢。

它允許在其中添加重復(fù)元素

無(wú)法按順序存儲(chǔ)元素

Hashtable 類的問(wèn)題

Hashtable 是線程安全的,即 Hashtable 中的所有方法都是同步的。因此,它不適合單線程環(huán)境。

Hashtable 無(wú)法按順序存儲(chǔ)條目

Enumeration 的問(wèn)題

無(wú)法刪除元素且方法名稱過(guò)長(zhǎng)

JDK 1.2 中的集合類

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

ArrayList:用于提供單線程環(huán)境下的解決方案,因?yàn)?ArrayList 中的方法不是同步的。

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

HashSet:不允許有重復(fù)元素。

TreeSet:用于按排序順序存儲(chǔ)元素。

HashMap:提供單線程環(huán)境下的解決方案,因?yàn)?HashMap 中的方法不是同步的。

TreeMap:用于按順序存儲(chǔ)鍵值對(duì)。

Iterator:用于解決枚舉問(wèn)題。同時(shí)還有一個(gè)專門處理列表的類 ListIterator。

HashSet 的問(wèn)題:它不能保持插入順序,即它不會(huì)按照元素添加到集合中的順序存儲(chǔ)元素。

HashMap 的問(wèn)題:像 HashSet 一樣,它不能保持插入順序。

JDK 1.4 中的集合類

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

LinkedHashSet:用于解決 HashSet 中插入順序的問(wèn)題。它按照元素添加到集合中的順序存儲(chǔ)元素。

LinkedHashMap:用于解決 HashMap 中插入順序的問(wèn)題。它還按照元素添加到集合中的順序存儲(chǔ)元素。

JDK 1.5 中的集合類

for-Each 循環(huán):作為替代迭代器進(jìn)行迭代的另一種方法

CopyOnWriteArrayList:引入以允許在修改底層列表的情況下安全地迭代元素。

CopyOnWriteArraySet:它使用內(nèi)部 CopyOnWriteArrayList 進(jìn)行所有操作。因此,它具有與該列表相同的基本屬性。

JDK 1.6 中的集合類

NavigableSet:作為擴(kuò)展了導(dǎo)航方法的有序集合,用于報(bào)告給定搜索目標(biāo)的最近匹配。

NavigableMap:作為擴(kuò)展了導(dǎo)航方法的 SortedMap,返回給定搜索目標(biāo)的最近匹配項(xiàng)。

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

JDK 1.8 中的集合類

Java 集合框架也有新更新,以支持 lambda 表達(dá)式、流和聚合操作。

stream() 作為父接口 Collection 的默認(rèn)方法:返回一個(gè)以該集合為源的順序 Stream。

parallelStream() 作為父接口 Collection 的默認(rèn)方法:返回一個(gè)可能并行的 Stream,以這個(gè)集合作為其源。

spliterator() 作為父接口 Collection 的一個(gè)默認(rèn)方法:創(chuàng)建一個(gè)遍歷此集合中元素的 Spliterator

removeIf(Predicate filter) 作為父接口 Collection 的默認(rèn)方法:移除滿足給定謂詞的所有元素。

同樣重要的是,這里的一個(gè)顯著點(diǎn)是所有新添加的方法都是接口 Collection 內(nèi)部的默認(rèn)方法。這是使用默認(rèn)方法的最佳示例。

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

Java 9 中的集合增強(qiáng)

新增用于創(chuàng)建不可變列表、集合和映射的 of() 靜態(tài)工廠方法介紹。這些方法包括:List.of(), Set.of(), Map.of(), Map.ofEntries()

Arrays.mismatch():新增方法以查找兩個(gè)數(shù)組中第一個(gè)不匹配的索引

Arrays.compare():添加了新方法來(lái)比較提供的兩個(gè)數(shù)組中的元素。

為 Arrays.equals() 添加了更多重載方法。

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

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

Java 10 中的集合增強(qiáng)

引入了 List.copyOf()、Set.copyOf() 和 Map.copyOf(),用于創(chuàng)建現(xiàn)有集合的不變副本。

Java 11 中的集合增強(qiáng)

Collection.toArray(IntFunction):添加了新的默認(rèn)方法,允許將集合的元素轉(zhuǎn)移到新創(chuàng)建的具有所需運(yùn)行時(shí)類型的數(shù)組中。新方法是現(xiàn)有 toArray(…) 方法的重載變體。

Java 21 中的集合增強(qiáng)

Java 21 在集合框架中引入了三個(gè)新接口:SequencedCollection、SequencedSet 和 SequencedMap。這些新的集合接口通過(guò)新庫(kù)提供的默認(rèn)方法,使我們能夠訪問(wèn)其第一個(gè)和最后一個(gè)元素。該功能還允許我們通過(guò)簡(jiǎn)單的調(diào)用方法來(lái)獲取集合的反轉(zhuǎn)視圖。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2960

    瀏覽量

    104562
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1487

    瀏覽量

    61829

原文標(biāo)題:Java集合API的改進(jìn)

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Stream API原理介紹

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

    java集合干貨系列

    `  前言  Java集合java提供的工具包,包含了常用的數(shù)據(jù)結(jié)構(gòu):集合、鏈表、隊(duì)列、棧、數(shù)組、映射等。Java
    發(fā)表于 12-14 15:11

    Java語(yǔ)言的特性介紹

      Java語(yǔ)言的作者們編寫(xiě)了具有廣泛影響的Java白皮書(shū),里面詳細(xì)地介紹了他們的設(shè)計(jì)目標(biāo)以及實(shí)現(xiàn)成果,還用簡(jiǎn)短的篇幅介紹Java語(yǔ)言的特
    發(fā)表于 01-20 14:44

    詳細(xì)介紹Java泛型、注解、并發(fā)編程

    介紹Java泛型、注解、并發(fā)編程、數(shù)據(jù)傳輸與序列化、高效IO、容器集合、反射與類加載以及JVM重點(diǎn)知識(shí)線程、內(nèi)存模型、JVM運(yùn)行時(shí)內(nèi)存、垃圾回收與算法、Java中四種引用類型、GC
    發(fā)表于 08-20 06:09

    如何用java映射創(chuàng)建java對(duì)象和調(diào)用java對(duì)象呢

    java是一種解析語(yǔ)言,java程序是通過(guò)java虛擬機(jī)解析.class的方式運(yùn)行起來(lái)。因此,java中就存在java映射的概念。下面
    發(fā)表于 04-11 14:43

    鴻蒙Java API中aafwk是什么概念?有什么用途?

    1、鴻蒙Java API中的說(shuō)明中aafwk是什么概念?什么文檔的縮寫(xiě)?用途是什么?如ohos.aafwk.ability2、和ohos.accessibility.ability這一類,沒(méi)有aafwk的部分API有什么區(qū)別?
    發(fā)表于 05-13 10:06

    java項(xiàng)目設(shè)計(jì)集合

    java項(xiàng)目設(shè)計(jì)集合:Java項(xiàng)目演示.ppt任務(wù)分配.doc項(xiàng)目開(kāi)發(fā)規(guī)范.doc超市貨物管理.doc項(xiàng)目所涉及的數(shù)據(jù)結(jié)構(gòu).doc需求說(shuō)明書(shū).doc
    發(fā)表于 05-16 17:54 ?46次下載
    <b class='flag-5'>java</b>項(xiàng)目設(shè)計(jì)<b class='flag-5'>集合</b>

    java程序集合1

    java程序集合1 部分代碼如下: create database address;use address;create table book(ID INT(4) AUTO_INCREMENT
    發(fā)表于 04-02 15:01 ?16次下載

    高手總結(jié)java常用API(免費(fèi)下載)

    高手總結(jié)java常用API(免費(fèi)下載)。
    發(fā)表于 11-06 11:27 ?0次下載

    使用Java API技巧分析

    本文介紹了一些關(guān)于Java API安全和性能方面的簡(jiǎn)單易用的技巧,其中包括保證API Key安全和開(kāi)發(fā)Web Service方面中在框架方面選擇的一些建議。 程序員都喜歡使用
    發(fā)表于 09-27 14:09 ?3次下載

    JAVA集合類匯總

    多數(shù)情況下使用。 二、層次關(guān)系 如圖所示:圖中,實(shí)線邊框的是實(shí)現(xiàn)類,折線邊框的是抽象類,而點(diǎn)線邊框的是接口 Collection 接口是集合類的根接口,Java中沒(méi)有提供這個(gè)接口的直接的實(shí)現(xiàn)類。但是卻讓其被繼承產(chǎn)生了兩個(gè)接口,就是 Set和List 。
    的頭像 發(fā)表于 01-16 11:50 ?3764次閱讀
    <b class='flag-5'>JAVA</b><b class='flag-5'>集合</b>類匯總

    Java的iterator和foreach遍歷集合源代碼

    Java的iterator和foreach遍歷集合源代碼
    發(fā)表于 03-17 09:16 ?9次下載
    <b class='flag-5'>Java</b>的iterator和foreach遍歷<b class='flag-5'>集合</b>源代碼

    如何利用Stream API來(lái)優(yōu)化Java代碼

    使用Stream API優(yōu)化代碼 Java8的新特性主要是Lambda表達(dá)式和流,當(dāng)流和Lambda表達(dá)式結(jié)合起來(lái)一起使用時(shí),因?yàn)榱魃昝魇教幚頂?shù)據(jù)集合的特點(diǎn),可以讓代碼變得簡(jiǎn)潔易讀 放大招,流
    的頭像 發(fā)表于 07-26 14:30 ?1277次閱讀

    基于Java的接口快速開(kāi)發(fā)框架——magic-api

    magic-api 是一個(gè)基于Java的接口快速開(kāi)發(fā)框架,編寫(xiě)接口將通過(guò)magic-api提供的UI界面完成,自動(dòng)映射為HTTP接口,無(wú)需定義Controller、Service、Dao、Mapper、XML、VO等
    發(fā)表于 07-19 11:42 ?884次閱讀
    基于<b class='flag-5'>Java</b>的接口快速開(kāi)發(fā)框架——magic-<b class='flag-5'>api</b>

    OpenVINO? Java API應(yīng)用RT-DETR做目標(biāo)檢測(cè)器實(shí)戰(zhàn)

    本文將從零開(kāi)始詳細(xì)介紹環(huán)境搭建的完整步驟,我們基于英特爾開(kāi)發(fā)套件AIxBoard為硬件基礎(chǔ)實(shí)現(xiàn)了Java在Ubuntu 22.04系統(tǒng)上成功使用OpenVINO? Java API,并
    的頭像 發(fā)表于 03-18 15:04 ?760次閱讀
    OpenVINO? <b class='flag-5'>Java</b> <b class='flag-5'>API</b>應(yīng)用RT-DETR做目標(biāo)檢測(cè)器實(shí)戰(zhàn)