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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Map.ofEntries()創(chuàng)建的Map的訪問時間復(fù)雜度與O(1)的HashMap相同嗎?

Map.ofEntries()創(chuàng)建的Map的訪問時間復(fù)雜度與O(1)的HashMap相同嗎?

收到一只叮咚 2023-08-16 09:57:03
我想使用 Java 9 中的新工廠方法創(chuàng)建一個不可變的 hashMapMap.ofEntries()內(nèi)聯(lián),例如:Map<Integer,?String>?map?=?Map.ofEntries( ????Map.entry(1,?"One"), ????Map.entry(2,?"Two"), ????Map.entry(3,?"Three"));然后令我驚訝的是,我發(fā)現(xiàn)我無法以同樣的方式創(chuàng)建不可變的 hashMap!例如,以下代碼將不起作用。HashMap<Integer,?String>?map?=?HashMap.ofEntries(?//not?work ????Map.entry(1,?"One"), ????Map.entry(2,?"Two"), ????Map.entry(3,?"Three"));然后,當(dāng)我想檢查工廠方法返回什么類型的地圖時,我發(fā)現(xiàn)了以下注釋:調(diào)用者不應(yīng)對返回實例的身份做出任何假設(shè)。所以我的問題是,不可變映射的訪問時間復(fù)雜度與 o(1) 的 hashMap 相同嗎?如果不是,如何創(chuàng)建一個既不可變又同時訪問 o(1) 的映射?如果可以內(nèi)聯(lián)創(chuàng)建那就最好了。
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經(jīng)驗 獲得超10個贊

可變性或不變性與 中訪問操作的復(fù)雜性沒有直接關(guān)系Map。例如, aHashMap將始終用于O(1)操作get(),而 aTreeMap將始終用于O(log n)。接口的實現(xiàn)Map決定了操作的復(fù)雜程度。

此外,始終可以創(chuàng)建不可修改的映射,因為在將Map項目放入任何具體類型之后,我們可以使任何具體類型不可變,如下所示:

Map<Integer,?String>?immutableMap?=?Collections.unmodifiableMap(mutableMap);

需要明確的是,這是HashMap.ofEntries()行不通的,因為該ofEntries()方法是靜態(tài)的并且是在Map接口中定義的,而不是在其任何實現(xiàn)類中定義的。

而且您不應(yīng)該擔(dān)心無法將映射的類型聲明為HashMap或其他一些具體類,無論如何,最佳實踐是將映射聲明為接口的類型Map。

另外,如果您使用的是 Java 9 之前的版本并且不介意使用外部庫,您可以ImmutableMap從 Guava 使用:

Map<Integer,?String>?immutableMap?=?ImmutableMap.of(key1,?val1,?key2,?val2);
查看完整回答
反對 回復(fù) 2023-08-16
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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