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

使用Java8从列表映射中根据列表大小获取列表

祖翰音
2023-03-14

我有地图

试图找到一种在Java8中实现的方法。

下面是我如何尝试实现代码,但我得到了一个列表

map.entrySet().stream()
   .filter(e->e.getValue().size()>1)
   .collect(Collectors.toList())

在Java8中实现它的方法是什么。


共有1个答案

秦涵涤
2023-03-14

您正在流式传输条目(键值对),而不是值本身,因此会产生意想不到的结果。如果您转而流式传输值(因为您似乎不关心键),您将获得所需的输出:

java prettyprint-override">map.values().stream()
   .filter(e->e.size()>1)
   .collect(Collectors.toList())

编辑:这是假设期望的结果是List

如果您想将所有这些值折叠成一个List

map.values().stream()
   .filter(e->e.size()>1)
   .flatMap(List::stream)
   .collect(Collectors.toList())

 类似资料:
  • 问题内容: 我有一个带有以下签名的类: 我想要一个来自a 的键,该键将是该类的名称。我如何使用java8流按es名称对列表进行分组?所有es在名称上都是唯一的。 可以在单个流中求解,还是应该以某种方式拆分它还是采用经典解决方案? 问题答案:

  • 现在,我希望获得和值最小的属性,以及其他和值最大的列表。 我知道减少... 但是是否可以用最小的获得和最大的获得? 如何获得这些列表?

  • 我有一个映射“m”和一个列表“l”,现在我想从那个映射“m”中获取值,使用“l”中可用的键列表。我想用Java 8流的概念,任何人都可以在这方面提供帮助。 我编码打印这些值,但我需要的是将值放入列表中 list.stream().foreach(s->{system.out.println(map.get(s));});

  • 我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。

  • 的默认行为 mapper() 在映射的 Table 到映射的对象属性中,每个属性都根据列本身的名称命名(特别是 key 属性 Column )这种行为可以通过几种方式进行修改。 从属性名称清楚地命名列 默认情况下,映射与 Column 与映射属性的相同-具体来说,它与 Column.key 属性对 Column ,默认与 Column.name . 指定给映射到的python属性的名称 Colum

  • 我有一个问题与转换列表对象映射字符串,列表对象。我正在寻找与一个关键名称的汽车所有组件的地图,一个值由汽车与此组件表示 我写了一个解决方案,但寻找一个更好的流解决方案。