Iterable
有一个forEach
默认方法
https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html
为什么它没有map
方法?
例如,Map
具有map
方法。
下面的Stream java文档摘录试图解释:
集合和流虽然有一些表面上的相似之处,但有不同的目标。藏品主要涉及对其元素的有效管理和访问。相比之下,流不提供直接访问或操作其元素的手段,而是关心声明性地描述其源以及将在该源上聚合执行的计算操作。
本质上,Iterable处理访问和遍历,而Streams更多地涉及转换&计算。
经过一些讨论,原因似乎是如果Iterable
上有一个map
方法,那么它必须返回一个Iterable
。这对于Collections来说是很奇怪的。
例如,List.map
必须返回一个Iterable
Map.map
的情况并非如此。