2017-08-07 75 views
-4

我有一组私有方法用于一个类的主要公共方法(接收列表),这些方法将主要使用java 8经典流操作,如filter,map,count e.t.c.我想知道如果在公共API中创建流单播并传递给其他方法而不是传递列表有任何性能优势或考虑因素,因为.stream()被称为单播时间。Java 8 stream vs List

+0

请张贴代码而不是背诵应用程序! –

+0

@ΦXocę웃Пepeúpaツ我没有看到代码中的1个公共方法和5个私有方法(200个与业务场景相关的行)将如何比声明更有用。有一个单一的4段,因此国际海事组织也不详细。 – jcrada

回答

2

调用stream()或任何中间操作实际上什么都不做,因为流由终端操作驱动。

因此,将内部流从一种方法传递到另一种方法并不坏IMO,可能会使代码更清洁。但不要从你的公开方法外部返回一个流,返回List代替(PLZ阅读所提供的意见,可能无法适用于所有情况下)

而且认为情况下,申请filter例如,然后收集到toList然后再次流式传输过滤List只有map后来显然是一个不好的选择......你收集得太快了,所以不要连这样的方法连内部。

+0

我不排除从'公共'方法返回流,[但已经讨论过](https://stackoverflow.com/q/24676877/2711488)... – Holger

+0

@Holger不错!谢谢,我刚刚编写了代码库,并且我们从不返回'Stream'。我不知道这是否应该改变... – Eugene

+2

检查,调用者多频繁地直接调用'stream()'或'forEach()'返回的集合... – Holger

0

一般来说,最好问一下该方法实际需要什么。如果每次收到一个列表,都会将其设为流,请改用流(流可以来自列表以外的其他东西)。这增强了可移植性和可重用性,并让您的api消费者了解需求。

问你确切需要什么,没有别的,没有什么。