[英]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
指定創建並分配給引用foo
的Object的實際類型。
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.