java8 函数式编程

1.函数式编程思想

a>概念

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

2.lambda表达式(前提是参数接口,且接口中只有一个抽象方法)

* 前提是参数接口,且接口中只有一个抽象方法 

  用lambda表示时 接口中的方法就会省略不写

a>概念

jdk1.8推出的,对某些匿名内部类写法进行简化,

他是函数编程思想的一个重要体现,不在关注是什么对象,更关注对数据进行什么操作。

b>语法格式

(参数列表)->{代码}

3.Stream流

java8的Stream使用的是函数编程模式

可以用来对集合或数组进行链状流式操作

可以更方便的对集合和数组操作。

4.中间操作

  filter  distinct()  map  sorted  limit  skip flatmap

 map 只能将一个对象转换为另一个对象

flatmap 可以将一个对象转换为多个对象作为流中的元素

    list.stream()

                .distinct()     //去重复

                .sorted()   // //排序 实体类必须实现 compared接口,在重写方法中设置排序规则

                .sorted((item1,item2)->item1.getAge-item2.getAge)    //同上

                .limit(5)    //设置流的个数超出部分抛弃

                .skip(2)   //跳过前2条数据

                .flatmap(item->item.getBooks.stream()) //getBook是个集合 实际就是返回stream() 类型

                .filter(item->item>10 && item<20)  //过滤获取item大于10的数据  &&支持多条件过滤  

                .map(item->item.getName)   //转换类型,返回的类型与item.getName类型一致

                                                            (且数据流中只有这一列的值)      

                .sorted()

                .foreach(item->System.out.println(item)) ;

5.终结操作

  foreach  //遍历对元素进行操作

  count  //返回long型  即流中数据的个数

  collect  //把当前流转换为集合(list set map)

  max/min //返回最大值或最小值  只能是int类型  返回 Optional<Integer>

  anyMatch //是否有任意匹配的元素  返回boolean

  allMatch //是否全部符合条件 返回boolean

  noneMatch //是否都不符合条件 返回boolean

  findAny //获取流中任意一个元素 返回 Optional<Bean>

  findfirst //获取流中的第一个元素 返回 Optional<Bean>

  reduce //归并 对流中的元素按照给定的计算方式得到结果

list.stream()

                .foreach(item->System.out.println(item)) ;

                .count();

                .map(item->item.getAge) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值