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