Java 向映射添加值时出错<;字符串,ArrayList<;字符串>&燃气轮机;

Java 向映射添加值时出错<;字符串,ArrayList<;字符串>&燃气轮机;,java,dictionary,arraylist,hashmap,Java,Dictionary,Arraylist,Hashmap,我发现了错误 error: incompatible types: String cannot be converted to ArrayList<String> crazyMap.put(company, day); 错误:不兼容的类型:无法将字符串转换为ArrayList crazyMap.put(公司,日); 当我运行此代码时 Map<String, ArrayList<String>> crazyMap = new HashMap

我发现了错误

error: incompatible types: String cannot be converted to ArrayList<String>
         crazyMap.put(company, day);
错误:不兼容的类型:无法将字符串转换为ArrayList
crazyMap.put(公司,日);
当我运行此代码时

Map<String, ArrayList<String>> crazyMap = new HashMap<String, ArrayList<String>>();
String company = "myCompany";
String day = "Monday";
crazyMap.put(company, day);
Map frazymap=newhashmap();
字符串company=“myCompany”;
String day=“星期一”;
crazyMap.put(公司,日);

如何格式化“day”参数以满足类型错误?

数据结构的目标是什么

crazyMap是否应该像您在上面尝试添加的那样存储一家映射到某一天的公司?如果是,请尝试:

Map<String, String> crazyMap = new HashMap<String, String>();
String company = "myCompany";
String day = "Monday";
crazyMap.put(company, day);
Map frazymap=newhashmap();
字符串company=“myCompany”;
String day=“星期一”;
crazyMap.put(公司,日);
或者你想让crazyMap拥有一个映射到多天的公司?大概是这样的:

Map<String, Collection<String>> crazyMap = new HashMap<String, Collection<String>>();
Collection<String> days = new ArrayList<String>();
days.add("Monday");
crazyMap.put("myCompany", days);
Map frazymap=newhashmap();
收集天数=新建ArrayList();
天。添加(“星期一”);
crazyMap.put(“myCompany”,天);

我建议使用一个已经存在的类型,该类型设计用于多个值:Multimap(;)

而不是这样做:

Map<String, ArrayList<String>> crazyMap = new HashMap<>();
crazyMap.put("myCompany", new ArrayList<>(Arrays.asList("Monday")));
一切都完成了

一个缺点是,使用的接口是
MultiMap
,它不扩展
Map
。这意味着您必须将变量类型“弱化”为
MultiMap
,如:

public void someMethod(MultiMap<K, V> multimap)
public void方法(MultiMap MultiMap)
而不是:

public void someMethod(Map<K, Collection<V>> multiMap)
public void方法(Map multiMap)
请在此处阅读有关差异的更多信息:



您可以在上找到最新版本的番石榴。

创建一个ArrayList,将字符串添加到其中,将列表添加到地图中。
crazyMap.put("myCompany", "Tuesday");
public void someMethod(MultiMap<K, V> multimap)
public void someMethod(Map<K, Collection<V>> multiMap)