第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用不可變的 Map 保留順序?

使用不可變的 Map 保留順序?

哆啦的時(shí)光機(jī) 2023-08-09 16:21:37
使用時(shí)java.util.Map.of(),它不保留順序。有沒(méi)有一種方法可以保持不可變Map并保留順序?
查看完整描述

4 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊

博士

進(jìn)行一個(gè)LinkedHashMap, 并調(diào)用 來(lái)包裝Collections.umodifiableMap,如不可修改的視圖集合中所討論的。

Map.of不可修改的靜態(tài)工廠映射

Javadoc 中清楚地記錄了方法Map所使用的實(shí)現(xiàn)。Map.of其中一個(gè)要點(diǎn)明確表明鍵未排序:

不可修改的地圖

映射的迭代順序未指定,并且可能會(huì)發(fā)生變化。

因此,如果需要排序,您必須使用另一種實(shí)現(xiàn)Map。

SortedMap

“保留順序”是指排序順序嗎?

Java 包含SortedMap用于定義Map實(shí)現(xiàn)的行為的接口,這些實(shí)現(xiàn)維護(hù)所有鍵的總排序。

Java 捆綁了兩種這樣的實(shí)現(xiàn):TreeMapConcurrentSkipListMap

保留原始插入順序

您的問(wèn)題不清楚,但我猜您所說(shuō)的“保留順序”的意思是您希望按照添加到地圖的順序維護(hù)密鑰。

引用Javadoc:

…可預(yù)測(cè)的迭代順序…

...維護(hù)一個(gè)貫穿其所有條目的雙向鏈表。該鏈表定義了迭代順序,通常是將鍵插入到映射中的順序(插入順序)。請(qǐng)注意,如果將鍵重新插入到映射中,插入順序不會(huì)受到影響。

不可修改的地圖

滿足LinkedHashMap您對(duì)原始插入順序的需求,但不能滿足您對(duì)不可修改的需求。為此,請(qǐng)使用該類Collections及其實(shí)用方法unmodifiableMap。

Map< String , String > map = new LinkedHashMap<>() ;

map.put( "this" , "that" ) ;

map.put( "other" , "thing" ) ;

Map< String , String > unmodMap = Collections.unmodifiableMap( map ) ;

請(qǐng)務(wù)必研究有關(guān)不可修改視圖集合的文檔以了解它們的行為。單擊可縮放。


下表概述了Map與 Java 11 捆綁的所有實(shí)現(xiàn)。

https://img3.sycdn.imooc.com/64d34cc00001172115281110.jpg

查看完整回答
反對(duì) 回復(fù) 2023-08-09
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

我相信您正在尋找的是LinkedHashMap。鏈接 Hashmap 與保留插入順序的常規(guī) HashMap 類似。



查看完整回答
反對(duì) 回復(fù) 2023-08-09
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

以下內(nèi)容不保留順序:


Map.of("a", 1, "b", 2); 

如果你想要一個(gè)不可變的ordered Map,那么你必須采取這種迂回的方式:


var map = new LinkedHashMap<String, String>();

map.put("a", 1);

map.put("b", 2);

map = Collections.unmodifiableMap(map);

不是很理想,因?yàn)槟仨殑?chuàng)建兩個(gè)映射,一個(gè)用于排序,另一個(gè)用于不可變。


查看完整回答
反對(duì) 回復(fù) 2023-08-09
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果 Google Guava 已存在于您的項(xiàng)目中,那么?ImmutableMap將滿足您的需求。

  1. 不變性(不是不可修改的視圖)和

  2. 迭代順序 = 創(chuàng)建順序

查看完整回答
反對(duì) 回復(fù) 2023-08-09
  • 4 回答
  • 0 關(guān)注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)