1

我正在尝试使用具有如下方法签名的第三方库:

testMethod(Iterable<HashMap<String,Date>>, String, String)

如何将可迭代传递给此方法?

我想做类似以下的事情,但它失败了:

HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());

testMethod(items, "more", "data");
4

3 回答 3

3

您需要传递一个Iterable或其中一个子类型,例如 ,ListSet。因此,您可以将 添加HashMap到 aList并传递它:

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...>等。您不能List<Map..>在其中传递 a 。

于 2013-09-30T19:42:02.750 回答
0

你需要用一些可迭代的对象来包装你的地图。使用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");`
于 2013-09-30T19:56:53.227 回答
-1

您需要将 Iterable 传递给该方法。看起来 HashMap 没有实现Iterable接口。您可以将 Map 子类化并将 Iterable 接口添加到您的子类中,或者传入地图条目的列表。

于 2013-09-30T19:41:30.953 回答