λ表达式在Java8中的作用有哪些

  介绍

本篇文章给大家分享的是有关λ表达式在Java8中的作用有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> 1。关于JSR335

JSR是Java规范要求的缩写,意思是Java规范请求,Java 8版本的主要改进是λ项目(JSR 335),其目的是使Java更易于为多核处理器编写代码。

以Java集前合是不能够表达内部迭代的,而只提供了一种外部迭代的方式,也就是,或者而循环。

 persons.forEach (p→p.setLastName (“Doe")); 

现在是由jdk库来控制循环了,我们不需要关心的姓是怎么被设置到每一个人对象里面去的,库可以根据运行环境来决定怎么做,并行,乱序或者懒加载方式。这就是内部迭代,客户端将行为p.setLastName当做数据传入api里面只内部迭代其实和集合的批量操作并没有密切的联系,借助它我们感受到语法表达上的变化。真正有意思的和批量操作相关的是新的流(流)api。新的java.util。流包已经添加进JDK 8了。


流(流)仅仅代表着数据流,并没有数据结构,所以他遍历完一次之后便再也无法遍历(这点在编程时候需要注意,不像集合,遍历多少次里面都还有数据),它的来源可以是收集,数组,io等等。


流作用是提供了一种操作大数据接口,让数据操作更容易和更快。它具有过滤,映射以及减少遍历数等方法,这些方法分两种:中间方法和终端方法,“流”抽象天生就该是持续的,中间方法永远返回的是流,因此如果我们要获取最终结果的话,必须使用终点操作才能收集流产生的最终结果。区分这两个方法是看他的返回值,如果是流则是中间方法,否则是终点方法。

简单介绍下几个中间方法(过滤器,地图)以及终点方法(收集、总结)

<强> 3.1.1Filter

在数据流中实现过滤功能是首先我们可以想到的最自然的操作了.Stream接口暴露了一个过滤方法,它可以接受表示操作的谓词实现来使用定义了过滤条件的λ表达式。

流人
  .stream ()
  .filter (p→p.getAge()比;18)
  . map(新功能(){
  @Override
  公共成人应用(人的人){
  返回新的成人(人);//将大于18岁的人转为成年人
  }
  });

现在,把上述例子转换成使用λ表达式的写法:

 int countOfAdult=persons.stream ()
  .filter (p→p.getAge()比;18)
  . map(人→新的成人(人)
  .count (); 

<强> 3.1.4Collect

收集方法也是一个流的终点方法,可收集最终的结果

列表adultList=persons.stream ()
  .filter (p→p.getAge()比;18)
  . map(人→新的成人(人)
  .collect (Collectors.toList ()); 

或者,如果我们想使用特定的实现类来收集结果:

 adultList=人名单
  .stream ()
  .filter (p→p.getAge()比;18)
  . map(人→新的成人(人)
  .collect (Collectors.toCollection (ArrayList::新));

篇幅有限,其他的中间方法和终点方法就不一一介绍了,看了上面几个例子,大家明白这两种方法的区别即可,后面可根据需求来决定使用。

λ表达式在Java8中的作用有哪些