当前位置:  开发笔记 > 编程语言 > 正文

Java 8 Streams - 使用流将相同类型的多个对象映射到列表

如何解决《Java8Streams-使用流将相同类型的多个对象映射到列表》经验,为你挑选了1个好方法。

是否有可能以更好的方式使用流来执行下面提到的步骤?

Set memberIds = new HashSet<>();
marksDistribution.parallelStream().forEach(marksDistribution -> {
        memberIds.add(marksDistribution.getStudentId());
        memberIds.add(marksDistribution.getTeacherId());
      });

instanceDistribution.getStudentId()并且instanceDistribution.getTeacherId()都是类型Long.

有可能会提出这类问题,但我无法理解.简单的是或否.如果是/否,那么如何和位解释.如果可能的话,请讨论效率.



1> Eran..:

是的,您可以使用flatMap将您的单个元素映射StreamStream多个元素中,然后将它们展平为单个元素Stream:

Set memberIds = 
    marksDistribution.stream()
                     .flatMap (marksDistribution -> Stream.of(marksDistribution.getStudentId(), marksDistribution.getTeacherId()))
                     .collect(Collectors.toSet());


@Eran 1+来自我,如果你有jdk-9,你可以使用flatMapping收集器:list.stream().collect(Collectors.flatMapping((MarksDistribution md) - > Stream.of(md.getStudentId(),md .getTeacherId()),Collectors.toSet()));
@Eugene:与所有Stream操作一样,我只在必要时使用Collector对应物.您几乎可以将每个Stream操作表示为仅收集器操作,尤其是Java 9,但它很难读取...
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有