当前位置: 首页 > 面试题库 >

将所有列表值合并到地图中

邵飞宇
2023-03-14
问题内容

我想将地图转换为:

Map<String, List<String>>

List<String>

结果列表是所有列表值的合并。


问题答案:

你可以有

List<String> result = map.values().stream().flatMap(List::stream).collect(Collectors.toList());

这将检索映射的值,values()然后将每个列表平面映射到由其元素形成的Stream中,并将结果收集到列表中。

另一种选择是,不对每个列表进行平面映射,从而可能会提高性能,而无需对每个列表进行平面映射,则可以通过调用每个累加的结果来直接收集Stream<List<String>>(由返回values().stream()addAll

List<String> result = map.values().stream().collect(ArrayList::new, List::addAll, List::addAll);


 类似资料:
  • 我想按id分组。 结果应如下所示: 静态编程语言中最惯用的方法是什么?

  • 我试图使用

  • 根据以下答案:https://stackoverflow.com/a/30202075/8760211 如何按stud\u id对每个组进行排序,然后返回一个包含所有学生的列表,作为按stud\u位置分组的结果,然后按stud\u id排序)? 将此作为现有Lambda表达式的扩展将非常好: 我需要根据原始列表中元素的顺序进行分组。 结果如下所示: 我尝试了以下方法: 但这行不通。

  • 假设我有一个多映射,如下所示: 第一个步骤是将字符串拆分为一个数组,因为最初它是一个逗号分隔的字符串。然后,我找到任何值中的最大元素数,循环该次数的条目中的所有值,并用结果为每个值创建一个映射。坦率地说,我上周五写了这段代码,但我已经不能正确地阅读它... 所以,一开始这是一件简单的事情,但我最终陷入了混乱,有没有更好的方法来做这件事? 提前谢了。

  • 我有两个相同类型“MyInfoObject”的列表(例如A和B),这样: 我想创建这两个列表的映射,以便列表a的所有ID和具有相同签名的列表B的所有ID创建一个类型为“bucketoFaandB”的桶: 因此,我的输出将是,其中key是签名 我的建议是: 在这种情况下,我的输出将是: 我想用Java 8的流来做这件事。 我想出的一个办法是: 从创建,say abuckets 迭代bList并创建依

  • 问题内容: 我正在尝试找出将两个列表合并为所有可能组合的最佳方法。因此,如果我从两个这样的列表开始: 结果列表如下所示: 也就是说,它基本上会生成一个列表列表,其中包含所有可能的组合。 我一直在通过itertools进行工作,我肯定可以找到答案,但是我无法提出一种使其以这种方式起作用的方法。我最接近的是: 哪个产生了: 因此,它会执行每个列表中所有可能的项目组合,但不会执行所有可能的结果列表。我如