Alf*_*ong 12 java list map generic-programming
我想Map<String, List<String>>在Java中实例化,
我试过了
Map<String, List<String>> foo = new <String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
和
Map<String, List<String>> foo = new <String, ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)
他们都没有工作.有没有人知道如何在Java中实例化这个地图?
Xab*_*ter 23
new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
或者像gparyani评论的那样:
new HashMap<>(); // type inference
Run Code Online (Sandbox Code Playgroud)
注意:每个条目都需要以实例化的List作为值.你不能得到("myKey").add("some_string_for_this_key"); 你第一次从中得到一个List.
因此,获取一个List,检查它是否为null.
如果它为null,则创建一个新列表,将字符串添加到其中,然后将List放回.如果它只是null,添加到它,或做你想要的.
Rav*_*yal 14
你忘了提这堂课.Map这是引用类型,是一个接口.HashMap在equals的另一侧指定创建并分配给引用的Object的实际类型.foo
Map<String, List<String>> foo = new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
指定的实际类型(HashMap此处)必须可分配给引用类型(Map此处),即如果引用类型是接口,则Object的类型必须实现它.并且,如果引用的类型是Class,则Object的类型必须是相同的类或其子类型,即它从它延伸.
从Java 7开始,您可以使用类似的简写
Map<String, List<String>> foo = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
不推荐您的第二种实例化方法.坚持使用List哪个接口.
// Don't bind your Map to ArrayList
new TreeMap<String, ArrayList<String>>();
// Use List interface type instead
new TreeMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
地图是一个界面.您必须告诉Java要实例化哪个具体的Map类.
Map<String, List<String>> foo = new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
要么
Map<String, List<String>> foo = new TreeMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
47769 次 |
| 最近记录: |