Java 8中Stream API学习笔记

2019-04-25 06:53:09来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

②并行操作

③执行顺序更灵活

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

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

②可能占用的空间会大些

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

Java 8引入了全新的Stream API。


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

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


原文链接:https://www.cnblogs.com/1693977889zz/p/10755780.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:包_继承

下一篇:SpringBoot整合Spring Security使用Demo