Java 8 流与列表

jcr*_*ada -3 java java-8 java-stream

我有一组私有方法,用于类的主要公共方法(接收列表),这些方法将主要使用 java 8 经典流操作,如 、等filter我想知道是否在公共 api 中创建一次流传递给其他方法而不是传递列表具有任何性能优势或考虑因素,称为一次性。 mapcount.stream()

Eug*_*ene 5

调用stream()或任何中间操作实际上不会执行任何操作,因为流是由终端操作驱动的。

因此,在内部将 Stream 从一种方法传递到另一种方法在我看来还不错,可能会使代码更清晰。但不要从公共方法外部返回 Stream,List而是返回 a (请阅读提供的注释,可能并不适用于所有情况)

还要考虑一下这种情况,filter例如应用然后收集到 a toList ,然后再次流式传输,List仅稍后过滤到这map显然是一个糟糕的选择...您收集得太早,因此即使在内部也不要链接这样的方法。

  • 我不会排除从“public”方法返回流,[但这之前已经讨论过](/sf/ask/1727381421/)… (2认同)
  • 检查调用者在返回的集合上直接调用“stream()”或“forEach()”的频率... (2认同)