我有两个类型均为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>);
});
谢谢!
答案 0 :(得分:2)
假设这些列表的大小相同:
Map<Long, Long> map = IntStream.range(0, listA.size())
.boxed()
.collect(Collectors.toMap(listA::get, listB::get));
yourOtherMap.putAll(map);
答案 1 :(得分:1)
尝试此选项:
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);
}
它简洁,易于阅读和维护,不会引起任何人审查您的代码的麻烦。