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

过滤流不同

沈俊美
2023-03-14
java prettyprint-override">class Developer{
    private Long id;
    private String name;
    private Integer codePost;
    private Integer codeLevel;
}
    null

或用java

Developer dev1 = new Developer (1,"Alan stonly",30,4);
Developer dev2 = new Developer (2,"Peter Zola",20,4);
Developer dev3 = new Developer (3,"Camilia Frim ",30,5);
Developer dev4 = new Developer (4,"Antonio Alcant",40,4);

Stream<Developer> Developers = Stream.of(dev1, dev2, dev3 , dev4);

共有1个答案

郎增
2023-03-14

正如注释中提到的,collectors.tomap应该在这里与合并函数一起使用(还可以选择映射供应商,例如LinkedHashMap::new,以保持插入顺序):

java prettyprint-override">Stream.of(dev1, dev2, dev3, dev4)
    .collect(Collectors.toMap(
        Developer::getCodePost,
        dev -> dev,
        (d1, d2) -> Stream.of(d1, d2)
                          .filter(d -> d.getCodeLevel() == 5)
                          .findFirst()
                          .orElse(d1),
        LinkedHashMap::new // keep insertion order
    ))
    .values()
    .forEach(System.out::println);

merge函数也可以用三进制运算符实现:

(d1, d2) -> d1.getCodeLevel() == 5 ? d1 : d2.codeLevel() == 5 ? d2 : d1

产出:

Developer(id=3, name=Camilia Frim , codePost=30, codeLevel=5)
Developer(id=2, name=Peter Zola, codePost=20, codeLevel=4)
Developer(id=4, name=Antonio Alcant, codePost=40, codeLevel=4)
 类似资料:
  • 我一直在检查Kafka流。我一直在测试下面的Kafka流代码 生产者主题:(这是第一个生产者主题-发送以下json数据) JSON-主题的生产者: Stream Topic代码:(这是第二个Streaming代码和主题) 如果UserID值为“1”,我想对其进行归档,然后将该数据发送到目标流媒体主题。 当我使用“.filter”并打印System.out时。println(“value:”valu

  • 过滤器作为读写操作的流内容传输过程中的附加阶段. 要注意的是直到php 4.3中才加入了流过滤器, 在php 5.0对流过滤器的API设计做过较大的调整. 本章的内容遵循的是php 5的流过滤器规范. 在流上应用已有的过滤器 在一个打开的流上应用一个已有的过滤器只需要几行代码即可: php_stream *php_sample6_fopen_read_ucase(const char *path

  • 当前,我们的 Restful Web API 不仅能够提供客户端需要的资源,还实现了认证和权限,可以保证数据的安全。大家在日常中一定有过这样的经历,有些网站免费用户一天只能免费观看 3 部视频,超过就要付费,否则无法观看,另外,如果想找到 2020 年上映的全部电影,只需在检索时选中想要的年份就可以。那么我们搭建的 Restful Web API 能实现类似的功能吗?当然可以,这就涉及到了限流与过

  • 19 比特流滤镜 默认编译时所有的比特流滤镜都被支持,你可以在配置脚本中以--list-bsfs获取有效的滤镜列表 可以利用--disable-bsfs禁用所有的比特流滤镜。要指定个别的滤镜可用,则在此基础上--enable-bsf=BSF,或者在默认(没有指定--disable-bsfs)下禁用个别的滤镜--disable-bsf=BSF,这里BSF是个别滤镜名称。 在ff*工具集中,-bsfs

  • 将此流收集到列表中 正如我所看到的,infinity循环有一些问题,所以peek()打印范围内的数字(12,99),这是可以的,但之后它再次打印范围内的数字(11,98),等等,你能解释一下我在哪里犯了错误吗?

  • 我有个人课: 我有一个叫personList的人的名单: 现在我需要找到所有状态为“不活跃”的人,不管这个人是否有身份证。如果一个人没有身份证,但状态为“活跃”,也包括那个人。我正在使用Java流进行过滤: 流式传输后的结果是没有人被选中。第一个人没有被选中是因为它没有通过第二个过滤器,最后一个人没有被选中是因为它没有通过第一个过滤器。 我想我可以通过使用将两个过滤器合并成一个来修复它,但是我正在