java - 可以将其转换为单行流吗?

标签 java java-8 java-stream

我想知道是否可以将其编写为更简洁的流函数:

MyObject myObject = new MyObject();

for (Thing thing : listofThings) {
    myObject = myObject.combine(thing);
}

最佳答案

是的,使用带有reduceStream:

MyObject myObject = listofThings.stream()
                                .reduce(new MyObject(),
                                        MyObject::combine,
                                        MyObject::combiner);

其中 combiner 是一个 MyObject 方法,它采用另一个 MyObject 实例并将其组合到当前对象中。

作为替代方案,您可以首先将 Thing 实例映射MyObject 实例,然后将这些实例缩减为单个 MyObject 实例:

MyObject myObject = listofThings.stream()
                                .map(new MyObject()::combine)
                                .reduce(MyObject::combiner)
                                .orElseGet(MyObject::new);

关于java - 可以将其转换为单行流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53740670/

相关文章:

java - mapreduce cassandra 给出 classcast 异常

java - 在 Java 6 库中提供谓词支持

java - 将 SortedSet 转换为 TreeMap 或 ImmutableMap,并将键作为迭代器位置

java - 将 Stream<IntStream> 转换为单个 IntStream

java - 修改部分列表,然后返回更新后的列表

java - 如何在流循环中获取根类对象

java - 如何解析实体声明并获取 XML 中的文件路径?

java - 如何改变缓冲图像的亮度?

Java Instant Messenger 问题

java - Java 8 Stream API 中的多个聚合函数