国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java 21 新特性 】順序集合(Sequenced Collections)

這篇具有很好參考價值的文章主要介紹了【Java 21 新特性 】順序集合(Sequenced Collections)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Java 21 中增加了一種新的集合類型:順序集合(Sequenced Collections)。

要介紹順序集合,就首先要說明一下出現(xiàn)順序(encounter order)。出現(xiàn)順序指的是在遍歷一個集合時,集合中元素的出現(xiàn)順序。

有些集合類型,有確定的出現(xiàn)順序,比如?List。不管遍歷多少次這樣的集合,其中元素的出現(xiàn)順序始終是固定。

有些集合類型,并沒有確定的出現(xiàn)順序,比如?HashSet。如果多次遍歷這樣的集合,其中元素的出現(xiàn)順序是不固定的。

在順序集合出現(xiàn)之前,Java 并沒有一個統(tǒng)一的接口來描述具有確定出現(xiàn)順序的集合。比如?Set?接口雖然沒有確定的出現(xiàn)順序,但是它的子類型?LinkedHashSet?和?SortedSet?是有的。

另外一個問題是,對于有固定出現(xiàn)順序的集合,并沒有定義統(tǒng)一的與順序相關(guān)的操作。與順序集合的處理相關(guān)的方法,散落在 Java 集合類庫的不同地方。這些方法并沒有統(tǒng)一的聲明,使用起來也不方便。

與順序集合相關(guān)的操作包括:

  • 獲取集合的第一個和最后一個元素

  • 在集合的最前面和最后面插入或刪除元素

  • 按照逆序來遍歷集合


Java 21 的順序集合會解決這些問題。增加了 3 個新的接口。

首先是?SequencedCollection,該接口的聲明如下所示:

interface SequencedCollection<E> extends Collection<E> {
    SequencedCollection<E> reversed();
    void addFirst(E);
    void addLast(E);
    E getFirst();
    E getLast();
    E removeFirst();
    E removeLast();
}

SequencedCollection?繼承自?Collection

在包含的方法中:

  • reversed?方法返回一個逆序的?SequencedCollection?對象。

  • addFirst?和?addLast?方法分別在集合的起始和結(jié)束位置添加新的元素。

  • getFirst?和?getLast?方法分別獲取集合的第一個和最后一個元素。

  • removeFirst?和?removeLast?方法分別刪除集合的第一個和最后一個元素。

除了?SequencedCollection?之外,還有幾個具體的子類型:

SequencedSet?同時繼承自?Set?和?SequencedCollection。

interface SequencedSet<E> extends Set<E>, SequencedCollection<E> {
    SequencedSet<E> reversed();    
}

SequencedMap?繼承自?Map,其中的 entry 有確定的出現(xiàn)順序。

SequencedMap?中的方法比較多,如下所示:

interface SequencedMap<K,V> extends Map<K,V> {
    SequencedMap<K,V> reversed();
    SequencedSet<K> sequencedKeySet();
    SequencedCollection<V> sequencedValues();
    SequencedSet<Entry<K,V>> sequencedEntrySet();
    V putFirst(K, V);
    V putLast(K, V);
 
    Entry<K, V> firstEntry();
    Entry<K, V> lastEntry();
    Entry<K, V> pollFirstEntry();
    Entry<K, V> pollLastEntry();
}

具體的方法說明:

  • reversed?方法返回一個 entry 逆序的?SequencedMap。

  • sequencedKeySet?方法返回包含 key 的?SequencedSet

  • sequencedValues?方法返回包含 value 的?SequencedCollection。

  • sequencedEntrySet?方法返回包含 entry 的?SequencedSet。

  • putFirst?和?putLast?分別在 entry 的最前和最后位置插入名值對。

  • firstEntry?和?lastEntry?分別獲取第一個和最后一個 entry。

  • pollFirstEntry?和?pollLastEntry?分別刪除第一個和最后一個 entry。

添加了這3個新的接口之后,Java 集合類的層次結(jié)構(gòu)發(fā)生了變化,如下圖所示:

【Java 21 新特性 】順序集合(Sequenced Collections)

綠色方框是新增的 3 個接口,從中可以看到已有集合類的繼承關(guān)系的變化:

  • List?繼承自?SequencedCollection。

  • Deque?繼承自?SequencedCollection。

  • LinkedHashSet?實現(xiàn)了?SequencedSet?接口。

  • SortedSet?繼承自?SequencedSet。

  • LinkedHashMap?實現(xiàn)了?SequencedMap?接口。

  • SortedMap?繼承自?SequencedMap。

有了這3個新的順序集合相關(guān)的接口之后,Java 代碼可以更清楚地表達(dá)順序集合以及順序集合上的操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-451195.html

到了這里,關(guān)于【Java 21 新特性 】順序集合(Sequenced Collections)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java02-迭代器,數(shù)據(jù)結(jié)構(gòu),List,Set ,TreeSet集合,Collections工具類

    Java02-迭代器,數(shù)據(jù)結(jié)構(gòu),List,Set ,TreeSet集合,Collections工具類

    目錄 什么是遍歷? 一、Collection集合的遍歷方式 1.迭代器遍歷 方法 流程 案例 2. foreach(增強(qiáng)for循環(huán))遍歷 案例 3.Lamdba表達(dá)式遍歷 案例 二、數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)介紹 常見數(shù)據(jù)結(jié)構(gòu) 棧(Stack) 隊列(Queue) 鏈表(Link) 散列表(Hash Table) 樹(Tree) List接口 ArraysList集合 Linked

    2024年02月14日
    瀏覽(54)
  • JDK21:Java21的新特性

    JDK21:Java21的新特性

    定于9月推出的Java21計劃現(xiàn)在包括一個關(guān)鍵封裝機(jī)制API和32位Windows端口的棄用。 Java開發(fā)工具包(JDK)21將于9月作為Oracle標(biāo)準(zhǔn)Java實現(xiàn)的下一個長期支持版本,現(xiàn)在有13個功能被正式提出,最近幾天又增加了兩個功能。 最新的提議包括密鑰封裝機(jī)制(KEM)API和32位x86 Windows端口的

    2024年02月07日
    瀏覽(24)
  • Java 21即將發(fā)布,探索Java 21新特性和改進(jìn)

    Java 21即將發(fā)布,探索Java 21新特性和改進(jìn)

    Java 21是 Java 17之后的下一個 LTS版本。虛擬線程在 Java 21中將成為正式功能。Java 21 有望將會成為繼 java8 之后又一個流行的 Java 版本。 Java 21將在 2023 年 9 月 19 日發(fā)布 3.1 正式功能 虛擬線程 (Virtual Threads) 順序集合(Sequenced Collections) 記錄類型的模式(Record Patterns) switch 的模

    2024年02月07日
    瀏覽(21)
  • Java21 新特性

    Java21 新特性

    2023年9月19日 ,Oracle 發(fā)布了 JDK21,是自 JDK17 之后最新的 LTS 版本(long-term support,長期支持版)。LTS版本一般每兩年發(fā)布一個,JDK目前的LTS版本有:JDK8 , JDK11 , JDK17 ,JDK21。 Java21新特性:( oracle jdk、openjdk文檔) 字符串模板(預(yù)覽版) 虛擬線程(在JDK19中是預(yù)覽版,在JDK21中是

    2024年02月03日
    瀏覽(24)
  • Java 21 新特性和改進(jìn)

    Java 21 新特性和改進(jìn)

    Java 21 是 Java 17 之后的下一個 LTS 版本。虛擬線程在 Java 21 中將成為正式功能。可以預(yù)期的是,Java 21 會成為一個很流行的 Java 版本。 Java 21 將在 2023 年 9 月 19 日發(fā)布。目前 Java 21 包含的內(nèi)容已經(jīng)基本確定了。下面來梳理一下 Java 21 中會包含的內(nèi)容。 虛擬線程 (Virtual Threads)

    2024年02月07日
    瀏覽(20)
  • Java 21 新特性(LTS版本)

    Java 21 新特性(LTS版本)

    JDK 21 于 2023 年 9 月 19 日 發(fā)布,這是一個非常重要的版本,里程碑式。 JDK21 是 LTS(長期支持版),至此為止,目前有 JDK8、JDK11、JDK17 和 JDK21 這四個長期支持版了。 官方文檔:OpenJDK Java 21 文檔 Java各個版本的文檔入口:Java平臺,標(biāo)準(zhǔn)版文檔 Java各個版本下載:https://jdk.java

    2024年04月23日
    瀏覽(27)
  • Java 21 新特性:Record Patterns

    Record Patterns 第一次發(fā)布預(yù)覽是在JDK 19、隨后又在JDK 20中進(jìn)行了完善?,F(xiàn)在,Java 21開始正式推出該特性優(yōu)化。下面我們通過一個例子來理解這個新特性。 上述代碼中定義了一個名為Point的record類(Java 16中的新特性),如果我們想要獲取、操作或者打印Point中的x和y的話。就不得

    2024年02月08日
    瀏覽(34)
  • 【Java基礎(chǔ)系列】JDK21新特性

    【Java基礎(chǔ)系列】JDK21新特性

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月04日
    瀏覽(22)
  • Java 21新特性-虛擬線程 審核中

    本文翻譯自國外論壇 medium,原文地址:https://medium.com/@benweidig/looking-at-java-21-virtual-threads-0ddda4ac1be1 Java 21 版本更新中最重要的功能之一就是虛擬線程 (JEP 444)。這些輕量級線程減少了編寫、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序所需的工作量。 正如我的許多其他文章一樣,在推出

    2024年02月08日
    瀏覽(24)
  • Java 21:最新特性、性能改進(jìn)和語言發(fā)展

    Java 21:最新特性、性能改進(jìn)和語言發(fā)展

    ??歡迎來到Java學(xué)習(xí)路線專欄~Java 21:最新特性、性能改進(jìn)和語言發(fā)展 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:Java學(xué)習(xí)路線 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有

    2024年02月05日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包