Java函数式编程

函数式编程的定义

函数式编程是一种编程的范式,他将计算视为函数的运算,避免变化状态和可变数据。他是一种声明式编程范式,也就是说,编程是用表达式或者声明而不是语句来完成的。

Lamda 表达式 : (a,b) -> a + b

比起指令式的编程,函数式编程更加强调程序执行的结果而不是执行的过程,倡导利用若干个简单的执行单元让计算结果不断渐进,逐层推导复杂的运算

userList.stream().skip(1).peek(uer -> log.debug("user:{}", user.getUserName()).collect(Collectors.toList())

 

函数式编程的好处

让代码更精简易懂(搬砖更快了!)

 

函数式编程的特点

函数的执行没有副作用

返回值仅依赖于输入参数

高阶函数

函数的参数可以是一个/多个函数

函数的返回值也可以是一个函数

Lamda表达式

箭头左边是参数列表,右边是函数体

方法引用 class::method

Java函数式接口

有且仅有一个未实现的非静态方法的接口叫做“函数式接口”

Java 流

理解流的概念

建立流的方式

Arrays.stream()

Collection.stream()

Stream.of()

Stream.iterate()

Stream.generate() 

StreamSupport.stream()

IntStream()

Stream.builder() 

常见操作符

后面可以继续跟:filter, map, peek, findAny, findFirst,

后面无法跟: forEach, anyMatch, noneMatch

count, min, max

Optional - 和null说再见

isPresent, isEmpty

orElse, or, orElseGet

Collectors - 收集器

收集为一个集合对象- toList, toSet, to

聚合计算- averagingXXX, summingXXX, maxBy

分组统计- groupingBy

其他操作 - mapping, collectingAndThen, joining

 

Flatmap - 处理流的嵌套

 

Reduce - 万金油

执行归集操作,某种程度上和collect类似

后言:本篇文章大多还是定义的记录,自己看完课程后,其实也是只吸收了百分之五十。还是要结合实际的业务场景,结合普通的写法去理解函数式编程以及流的威力

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值