簡體   English   中英

實例化地圖的方式 <String, List<String> &gt;在Java中

[英]The way to instantiate map<String, List<String>> in Java

我想在Java中實例化Map<String, List<String>>

我試過了

Map<String, List<String>> foo = new <String, List<String>>();

Map<String, List<String>> foo = new <String, ArrayList<String>>();

他們都沒有工作。 有沒有人知道如何在Java中實例化這個地圖?

new HashMap<String, List<String>>();

或者像gparyani評論的那樣:

new HashMap<>(); // type inference

注意:每個條目都需要以實例化的List作為值。 你不能得到(“myKey”)。add(“some_string_for_this_key”); 你第一次從中得到一個List。

因此,獲取一個List,檢查它是否為null。

如果它為null,則創建一個新列表,將字符串添加到其中,然后將List放回。 如果它只是null,添加到它,或做你想要的。

你忘了提這堂課。 這里的Map是引用類型,是一個接口 equals另一側的HashMap指定創建並分配給引用fooObject實際類型。

Map<String, List<String>> foo = new HashMap<String, List<String>>();

指定的實際類型(此處為HashMap )必須可分配給引用類型(此處為Map ),即如果引用類型是接口 ,則Object的類型必須實現它。 並且,如果引用的類型是Class ,則Object的類型必須是相同的或其子類型,即它從它延伸。

從Java 7開始,您可以使用類似的簡寫

Map<String, List<String>> foo = new HashMap<>();

推薦您的第二種實例化方法。 堅持使用List作為接口

// Don't bind your Map to ArrayList
new TreeMap<String, ArrayList<String>>();

// Use List interface type instead
new TreeMap<String, List<String>>();

地圖是一個界面。 您必須告訴Java要實例化哪個具體的Map類。

Map<String, List<String>> foo = new HashMap<String, List<String>>();

要么

Map<String, List<String>> foo = new TreeMap<String, List<String>>();

等等

暫無
暫無

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

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