我有一组私有方法,用于类的主公共方法(接收列表),这些方法主要使用java {8}经典流操作filter
,map
,count
等我想知道在公共API中创建流单次时间并传递给其他方法而不是传递列表有任何性能优势或考虑,因为.stream()
被称为单次。
答案 0 :(得分:2)
调用stream()
或任何中间操作实际上什么都不做,因为流是由终端操作驱动的。
因此将内部流从一个方法传递到另一个方法也不错IMO,可能会使代码更清晰。但是不要从公共方法外部返回Stream,而是返回List
(plz读取提供的注释,可能不适用于所有情况)
还要考虑以下情况:例如,应用filter
然后收集到toList
然后再次将List
过滤到仅{{1}后来显然是一个糟糕的选择......你收集得太快,所以不要在内部链接这样的方法。
答案 1 :(得分:0)
一般来说,最好询问方法实际需要什么。如果每次收到列表时都将其设为流,则请求流(流可以来自列表以外的其他内容)。这增强了可移植性和可重用性,让您的api的消费者可以预先了解这些要求。
确切地询问你需要什么,仅此而已。