当前位置: 首页 > 知识库问答 >
问题:

在Java中使用stream().collect创建由2个列表组成的映射

方玄天
2023-03-14

例如,有两个列表:

List<Double> list1 = Arrays.asList(1.0, 2.0);
List<String> list2 = Arrays.asList("one_point_zero", "two_point_zero");

使用Stream,我想创建一个由这些列表组成的映射,其中清单1是键,清单2是值。要做到这一点,我需要创建一个辅助列表:

List<Integer> list0 = Arrays.asList(0, 1);
Map<Double, String> map2 = list0.stream()
                .collect(Collectors.toMap(list1::get, list2::get));

list0按List1::Get和List2::Get的顺序使用。有没有一种不创建list0的更简单的方法?我尝试了以下代码,但没有起作用:

Map<Double, String> map2 = IntStream
                .iterate(0, e -> e + 1)
                .limit(list1.size())
                .collect(Collectors.toMap(list1::get, list2::get));

共有1个答案

金旺
2023-03-14

您可以使用intstream生成索引,而不是使用辅助列表保存索引。

Map<Double, String> map = IntStream.range(0, list1.size())
            .boxed()
            .collect(Collectors.toMap(i -> list1.get(i), i -> list2.get(i)));
 类似资料:
  • 我有使用Java8的代码: 原始列表是 [3, 5, 4, 2, 5]。执行“筛选”和“收集”操作后,列表将更改为 [3, 5, 4, 5]。 是否所有操作都对原始列表执行,并且不创建新列表?还是在“过滤”和“收集”操作之后,返回新创建的列表并忽略原始列表?

  • 我有一个阵列列表多地图- 它显示为json,如下所示: 但我需要如何将其解析为:

  • 我有一个a类和B类的列表,没有重复的元素。“代码”属性在A类和B类中都是相同的。我想将它们转换为Map 最终映射的顺序应与列表1中的元素相同 ~A 更新:我将代码更新到下面,但它不是编译的。你知道怎么了吗?

  • 问题内容: 我的情况是: 我想知道是否有一个名字和年龄相同但不在乎的人。 什么是最快的方法? 问题答案: 为自己定义一个关键对象,该对象可以保存并比较所需的属性。在这种简单情况下,您可以使用一个小的列表,而每个索引对应一个属性。对于更复杂的情况,可以使用(使用属性名称作为键)或专用类: 具有这种映射功能。您可以使用简单的解决方案: 当您的列表很大时,这可能会导致性能不佳。如果列表很大(或者无法预测

  • 我有一个的数组,它们都有一个的列表: 我想创建一个包含所有变量的列表。我今天是这样做的: 我尝试过此操作,但它返回给我一个,而我想要一个,其中附加了列表的所有元素(使用):

  • 我有一个字符串数组和一个整数数组。如何使用第一个作为键,第二个作为值来创建地图? 如何在 Kotlin 中将 List 转换为 Map?不能解决这个问题;我有2个数组,想要一个地图。