9102年了,你还在用for循环操作集合?

前段时间公司书架多了一本《Java8 实战》,毕竟久闻lambda的大名,于是借来一阅。这一看,简直是惊为天人啊,lambda,stream,java8里简直是满脑子骚操作,看我的一愣一愣的。我甚至是第一次感觉到了什么叫优雅。

image-20190224175258572

本文主要介绍java8中的流处理,看看java8是怎么愉快的玩耍集合的,让我们来一起感受java8的魅力吧!

我就随便举个例子,看看Stream有多优雅。

// 对苹果按颜色汇总并绩数量 Map<String, Long> appleCount = apples.stream() .collect(groupingBy(Apple::getColor, counting())); // 过滤掉颜色为黑色的苹果,并汇总好苹果的总金额 Double sum = apples.stream() .filter(i->"black".equals(i.getColor())) .collect(toList); 一、lambda表达式

虽然本文重点是stream,但是stream中需要传递lambda表达式,所以简单介绍一下lambda表达式。lambda表达式其实就是匿名函数(anonymous function),是指一类无需定义标识符的函数或子程序。

java中匿名函数的表现形式,只留下入参和方法体中的内容

// 普通函数 public void run(String s){ System.out.print(s+"哈哈"); } // 我不要名字啦!!! (s)->System.out.print(s+"哈哈")

诶,过去我们都用对象调方法的,你弄这个没名的东西啥时候用啊?

java中我们通过函数式接口来使用这种匿名函数。

函数式接口
1.java中只包含一个未实现方法的接口。其中可以有与Object中同名的方法和默认方法(java8中接口方法可以有默认实现)。
2.java中函数式接口使用@FunctionalInterface进行注解。Runnable、Comparator都是函数式接口。
3.java.util.function包下为我们提供很多常用的函数式接口,例如Function等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzfxf.html