繁体   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