为什么没有无参的
可以简单地使用
在我看来,这是迄今为止最常见的使用 flatMap(Function mapper) 的方法。
Stream.flatMap()
方法来展平 Stream<Stream<T>>
?可以简单地使用
Stream.flatMap(o -> o)
实现。在我看来,这是迄今为止最常见的使用 flatMap(Function mapper) 的方法。
flatmap(o -> o.stream())
已经出现了。 - user2357112flatMap
代替。 - Louis WassermanflatMap
и¶…иҝҮ100ж¬ЎгҖӮжңҖеёёи§Ғзҡ„з”Ёжі•жҳҜflatMap(Arrays::stream)
жҲ–иҖ…flatMap(Collection::stream)
гҖӮжҲ‘еҫҲе°‘йңҖиҰҒе…¶дёӯзҡ„identityеҸӮж•°гҖӮ - Tagir ValeevStream
方法都适用于任何类型的流元素。唯一值得注意的例外是sorted()
,它假设元素实现了Comparable
接口。但是添加更多这样的方法会使API变得混乱,容易出错。在提出的flatMap()
方法中,您必须假设流元素本身也是流,因此您需要在内部进行未检查的转换。如果有人误用它,他在编译时不会有错误,但在运行时会出现ClassCastException
。您会在Stack Overflow上看到很多类似“flatMap不起作用,求助”的问题。 - Tagir ValeevflatCollection()
(=flatMap(Collection::stream)
)或flatArray()
(=flatMap(Arrays::stream)
)这样的快捷方式,但是发现没有办法在编译时检查当前流元素类型是数组还是集合。因此,这些方法只会在错误使用时增加混乱和运行时错误。所以我放弃了这个想法。sorted()
也有同样的问题:它不会在编译时检查流元素是否可比较(不像sorted(Comparator.naturalOrder())
)。但是sorted
是可以原谅的,因为它非常有用。 - Tagir Valeev