簡體   English   中英

合並兩個Long類型列表並添加到java 8中的現有映射

[英]Merge two list of type Long and add to existing map in java 8

我有兩個Long類型的列表,比如ListAListB

我想將它們合並到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.

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