我正在尝试使用具有方法签名的第三方库:
testMethod(Iterable<HashMap<String,Date>>, String, String)
如何将iterable传递给此方法?
我想做类似以下的事情,但它失败了:
HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
testMethod(items, "more", "data");
答案 0 :(得分:3)
您需要传递Iterable
或其中一个子类型,例如List
,Set
等。因此,您可以将HashMap
添加到{{} 1}},并传递它:
List
请注意,由于参数类型为HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
List<HashMap<String, Date>> list = new ArrayList<HashMap<String, Date>>();
list.add(items);
testMethod(list, "more", "data");
,因此您只能传递 - Iterable<HashMap<String, Date>>
或List<HashMap...>
等。您无法在其中传递Set<HashMap...>
。
答案 1 :(得分:0)
你需要用一些Iterable对象包装你的Map。使用Arrays.asList(T... a)
应该在这里工作。
HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
testMethod(Arrays.asList(list), "more", "data");`
答案 2 :(得分:-1)
您需要将Iterable传递给该方法。看起来HashMap没有实现Iterable接口。您可以子类化Map并将Iterable接口添加到子类中,也可以传入地图条目列表。