[英]Merge two list of type Long and add to existing map in java 8
我有兩個Long類型的列表,比如ListA
和ListB
。
我想將它們合並到Map<Long, Long>
,以便ListA
成為鍵, ListB
變為值。 這里我想要將這些鍵值對添加到現有地圖中。
我知道如何解析列表並返回一個新的地圖對象(使用Collectors.toMap
)。 我的問題是添加到現有地圖,可能是這樣的:
Map<Long, Long> map = new HashMap<Long, Long>;
// ... entries added to map
ListA.stream().forEach(a -> {
map.put(a, <get 0th element of ListB somehow>);
});
提前致謝!
假設這些列表具有相同的大小:
Map<Long, Long> map = IntStream.range(0, listA.size())
.boxed()
.collect(Collectors.toMap(listA::get, listB::get));
yourOtherMap.putAll(map);
試試這個選項:
Map<Long, Long> map = new HashMap<>();
IntStream.range(0, ListA.size())
.forEach(i -> {
map.put(ListA.get(i), ListB.get(i));
});
但老實說,我認為使用常規的Java 8增強for
循環沒有錯:
// assuming both lists have the same size
for (int i=0; i < ListA.size(); ++i) {
map.put(ListA.get(i), ListB.get(i);
}
它簡潔,易於閱讀和維護,不會讓任何人審查您的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.