本文介绍了使用stream()创建由2个列表组成的映射。在Java中收集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,有两个列表:
List<Double> list1 = Arrays.asList(1.0, 2.0);
List<String> list2 = Arrays.asList("one_point_zero", "two_point_zero");
使用Stream,我想创建一个由这些列表组成的地图,其中list1用于键和list2是为了价值观。要做到这一点,我需要创建一个辅助列表:
Using Stream, I want to create a map composed of these lists, where list1 is for keys and list2 is for values. To do it, I need to create an auxiliary list:
List<Integer> list0 = Arrays.asList(0, 1);
这是地图:
Map<Double, String> map2 = list0.stream()
.collect(Collectors.toMap(list1::get, list2::get));
list0用于list1 :: get和list2 ::开始工作。没有创建list0有没有更简单的方法?我尝试了以下代码,但它不起作用:
list0 is used in order list1::get and list2::get to work. Is there a simpler way without creation of list0? I tried the following code, but it didn't work:
Map<Double, String> map2 = IntStream
.iterate(0, e -> e + 1)
.limit(list1.size())
.collect(Collectors.toMap(list1::get, list2::get));
推荐答案
而不是使用辅助列表来保存索引,你可以用 IntStream
生成它们。
Instead of using an auxiliary list to hold the indices, you can have them generated by an IntStream
.
Map<Double, String> map = IntStream.range(0, list1.size())
.boxed()
.collect(Collectors.toMap(i -> list1.get(i), i -> list2.get(i)));
这篇关于使用stream()创建由2个列表组成的映射。在Java中收集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!