簡體   English   中英

HashMap 的 get() 方法

[英]get() method of HashMap

我有一個哈希映射:

Map stuff = new HashMap<String, ArrayList<Thing>();

我正在嘗試使用.get()方法來獲取ArrayList ,但我有一條錯誤消息說,

對象無法轉換為 ArrayList;

我不確定為什么會收到此錯誤消息? 另外,是否有另一種方法可以在鍵處獲取ArrayList

嘗試使用 <> 參數化 Map 聲明。

Map<String, ArrayList<Thing>> stuff = new HashMap<>() ;

如果沒有類型聲明,它將是一個無類型的 Map,因此編譯器只能假設 get 的結果是最通用的可能結果,一個對象。

使用菱形運算符,編譯器將從左側聲明推斷右側的類型。

您可以將 get 的結果轉換回 ArrayList,但最好改為參數化 Map 聲明。 強制轉換將需要運行時檢查,這會帶來一些性能成本,並且一旦您的代碼變得更難以理解,可能會導致崩潰。 如果改用參數化形式,編譯器可以證明它是正確的類型,防止崩潰並運行得更快。

如果您使用的是 java 1.7 之前的舊 java,則需要在 <> 中寫出完整類型。

有關更多信息,請參閱 oracle 的本 教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM