簡體   English   中英

將iterable作為方法參數傳遞?

[英]Pass iterable as method argument?

我正在嘗試使用具有如下方法簽名的第三方庫:

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

您需要傳遞Iterable或其子類型之一,例如ListSet等。因此,您可以將HashMap添加到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...>等,而不能傳遞List<Map..>在里面。

您需要使用一些可迭代的對象包裝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");`

您需要將Iterable傳遞給該方法。 看來HashMap沒有實現Iterable接口。 您可以對Map進行子類化,然后將Iterable接口添加到您的子類中,也可以傳入地圖項的列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM