Java 8 - 流意识形态
我最近开始玩Java 8,之前在Haskell/Scala中做过一些零碎的事情。我试图在Java中使用高阶函数,例如或,我正在努力理解推动一切走向意识形态的动机是什么。我知道它给出了很好的,一般的抽象,它应该是懒惰的,但让我们考虑一个非常简单,常见的例子:map
forEach
Stream
list.map(x -> do_sth(x));
非常常见的成语,期望这返回一个.现在,在Java 8中,我需要做这样的sth:List<T>
list.stream().map(x -> doSth(x)).collect(Collectors.toList())
现在,据我所知,在调用 collect 之前,流不会应用地图,因此将有一个通过引擎盖下的集合。我不明白的是,为什么那些常见的地图用例,例如,列表不会添加到相应的接口中?我在这里是否缺少一个基础设计决策?map.toList()
list.groupBy()