我想Map<String, List<String>>
用Java实例化,
我试过了
Map<String, List<String>> foo = new <String, List<String>>();
和
Map<String, List<String>> foo = new <String, ArrayList<String>>();
它们都不起作用。有谁知道如何用Java实例化这个地图?
我想Map<String, List<String>>
用Java实例化,
我试过了
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 作为值。你不能 get("myKey").add("some_string_for_this_key"); 第一次从它 get() 一个 List 。
所以,获取一个列表,检查它是否为空。
如果它为空,则创建一个新列表,将字符串添加到其中,然后将列表放回原处。如果它不是空值,添加到它,或者做你想做的事。
你忘了提到班级。Map
这是引用类型,是一个Interface。HashMap
在 equals 的另一边,指定了创建并分配给引用的Object的实际类型。foo
Map<String, List<String>> foo = new HashMap<String, List<String>>();
指定的实际类型(HashMap
此处)必须可分配给引用类型(Map
此处),即如果引用类型是接口,则对象的类型必须实现它。并且,如果引用的类型是Class,则 Object 的类型必须是相同的类或其子类型,即从它扩展而来。
从 Java 7 开始,您可以使用简写形式,例如
Map<String, List<String>> foo = new HashMap<>();
不推荐您的第二种实例化方式。坚持使用List
which is an Interface。
// 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>>();
等等