[英]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.