Java 8中Stream API学习笔记

1)函数式编程的优点和劣势分别是什么?
优点:
①不可变性编程

②并行操做安全

③执行顺序更灵活函数式编程

④代码更加简洁
纯粹的函数式编程,变量具备不可变性,同一个参数不会在不一样场景下得出不一样的结果,所以大大加强了系统的稳定性。并行操做,与线程无关,提升了安全性。函数

以Lambda表达式为例,Lambda语法实现了类型自动推断,在方法引用时考虑参数类型和返回值便可。Lambda可做为参数传给函数、Lambda结合forEach,stream(),FunctionalInterface Lib的使用,简化了代码。函数能够被当作变量使用,好比,在用递归时,只关注表达式,即描述问题自己,而不是如何实现,代码更加接近天然语言。
劣势:
①消耗资源优化

②可能占用的空间会大些线程

③不易排查
以递归为例,其子问题的答案被重复计算,当输入的参数较大,程序可能会因建立过多的堆栈,产生溢出问题,此时要考虑尾递归优化。尾递归优化时还要考虑编译器、解释器的支持与否。这样一来,在获得便利的同时也加大了函数式编程的难度和异常维护的开销。
2)Stream流的哪个方法最有价值,为何》设计

Java 8引入了全新的Stream API。blog


Stream提供许多实用的功能,不一样的方法有不一样的用处,转换操做(map、filter、sorted、distinct)、合并操做(concat、flatMap)、并行处理(parallel)、聚合操做(reduce、count、max、min、sum、average)、其余操做(allMatch、forEach)等。递归

我的认为,Stream的价值不止于它的某一个方法在平常开发中被用到次数的多少来决定的,而是它的设计使得返回结果依然是一个Stream。由于是Stream,能够利用它去进行内存计算;由于是Stream,能够利用它的惰性计算去处理诸多复杂问题。由于是Stream,Lambda在与Stream的结合使用中,让代码更加简洁。内存

相关文章
相关标签/搜索