将iterable作为方法参数传递?

时间:2013-09-30 19:39:28

标签: java methods hash arguments iterable

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

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");

3 个答案:

答案 0 :(得分:3)

您需要传递Iterable或其中一个子类型,例如ListSet等。因此,您可以将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接口添加到子类中,也可以传入地图条目列表。