我收到了错误
error: incompatible types: String cannot be converted to ArrayList<String>
crazyMap.put(company, day);
当我运行此代码时
Map<String, ArrayList<String>> crazyMap = new HashMap<String, ArrayList<String>>();
String company = "myCompany";
String day = "Monday";
crazyMap.put(company, day);
如何格式化'day'参数以满足类型错误?
答案 0 :(得分:0)
您对数据结构的目标是什么?
madMap应该存储一个映射到一天的公司,就像你试图在上面添加一样吗?如果是这样,请尝试:
Map<String, String> crazyMap = new HashMap<String, String>();
String company = "myCompany";
String day = "Monday";
crazyMap.put(company, day);
或者您是否希望crazyMap拥有一个映射到多天的公司?像这样:
Map<String, Collection<String>> crazyMap = new HashMap<String, Collection<String>>();
Collection<String> days = new ArrayList<String>();
days.add("Monday");
crazyMap.put("myCompany", days);
答案 1 :(得分:0)
我建议使用专为多个值设计的现有类型,而不是自己使用@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_player_bio, container, false);
...
Bundle arguments = getArguments();
Bio bio = arguments.getParcelable("bio");
...
return view;
}
:Guavas Multimap(explanation; JavaDoc)。
而不是这样做:
ArrayList
你可以这样做:
Map<String, ArrayList<String>> crazyMap = new HashMap<>();
crazyMap.put("myCompany", new ArrayList<>(Arrays.asList("Monday")));
这也避免了丑陋的东西,如:
Multimap<String, String> crazyMap = ArrayListMultimap.create();
crazyMap.put("myCompany", "Monday");
如果它不存在,Guava会为您创建集合。请致电:
ArrayList<String> items;
if (crazyMap.containsKey("myCompany")) {
items = crazyMap.get("myCompany");
} else {
items = new ArrayList<>();
}
items.add("Tuesday");
crazyMap.put("myCompany", items);
一切都已完成。
一个缺点是,使用的接口是crazyMap.put("myCompany", "Tuesday");
,它不会扩展MultiMap
。这意味着您必须将变量类型“弱化”为Map
,例如:
MultiMap
而不是:
public void someMethod(MultiMap<K, V> multimap)
在此处详细了解差异:"Multimap Is Not A Map"。
您可以在maven repository上找到最新版本的Guava。