美文网首页
java8 in action行为参数化

java8 in action行为参数化

作者: 西西_20f6 | 来源:发表于2018-11-28 09:33 被阅读0次

行为参数化:
拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用,这意味着你可以推迟这块代码的执行,例如你可以将代码块作为参数传递给另一个方法,稍后再去执行它。这样这个方法的行为就基于那块代码被参数化了。

List<Apple> greenApples = filterApples(inventory,
                FilteringApples::isGreenApple);//方法引用:静态类的静态方法
        //FilteringApples::isGreenApple表示接收一个FilteringApples参数并返回一个boolean给filterApples(),
        //而filterApples则希望接收一个Predicate<Apple>参数。
        //Predicate谓词在数学上常常用来代表一个类似函数的东西,它接收一个参数值,并返回true或false,java8也允许你写Function<Apple,Boolean>,但用Predicate<Apple>是更标准的方式,效率也会更高一点,避免了将boolean封装到Boolean中。

和Collection API相比,Stream API处理数据的方式非常不同,用集合的话,你得自己去做迭代的过程,你得用for-each循环一个个去迭代元素,然后再处理元素。我们把这种数据迭代的方法称为外部迭代。而Stream API数据处理完全是在库内部进行的,我们把这种思想称作内部迭代。
java8利用Stream API解决了两个问题:集合处理时的套路和晦涩,以及难以利用的多核。
第一个问题:集合处理时的套路,我们在处理集合时要写很多套路代码,有了Stream,代码变的简洁。第二个问题:以及难以利用的多核,使用Stream,这些操作可以并行化。比如在两个CPU上筛选列表,可以让一个CPU处理列表的前一半,第二个CPU处理列表的后一半。然后CPU对各自的半个列表做筛选,最后,两个CPU把筛选结果合并起来。并行化利用了多核,并提高了效率。

Stream API和Collection API的行为差不多,它们都能够访问数据项目的序列,不过,Collection主要是为了存储和访问数据,而Stream则主要用于描述对数据的计算,Stream允许并提倡并行处理一个Stream中的元素。但筛选一个Collection的最快方法常常是将其转换为Stream,进行并行处理,然后再转换回List.

//如何利用Stream和lambda表达式顺序或并行地从一个列表里筛选出比较重的苹果。
//1,顺序处理:
        List<Apple> heavyApples1 = inventory.stream().
                filter((Apple apple) -> 150<apple.getWeight()).collect(Collectors.toList());
//2,并行处理

相关文章

  • java8 in action行为参数化

    行为参数化:拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用,这意味着你可以推迟这...

  • 行为参数化------Java8 in action

    行为参数化是一种类似于策略设计模式的模式,可以轻松地适应不断变化的需求。 具体而言:行为参数化就是让一个方法接受多...

  • Lambda表达式知识手册

    1.行为参数化 行为参数化是将方法的具体实现抽象化,java8之前可以使用接口(策略模式,根据不同需求需要编写...

  • java8之行为参数化,你用了吗?

    java8之行为参数化,你用了吗? java8新增加了方法引用::语法(将方法作为参数)。将方法的引用传递进去,可...

  • java8 in action:第二章学习,行为参数化

    之前在第一章中提到了谓词(predicate),第一章超链接,今天继续进行扩展。第一章中找指定重量的苹果或者指定颜...

  • Java8函数式编程之二 : Lambda表达式

    针对上篇博客Java8函数式编程之一: 行为参数化 - 简书最后留下的问题,也就是java8怎样解决匿名内部类代码...

  • java8学习:行为参数化

    将“行为“作为参数,传进函数,然后去执行 直接上例子 目标:获取所有颜色为绿色的苹果 对象:苹果列表 行为:筛选出...

  • Java8新特性

    Java8新特性 Project 01 给出了行为参数化传递代码的方式 定义一个标准的谓词模板 用ApplePre...

  • 新年第一本书

    java8实战下周写总结

  • Java8 学习笔记

    @(in action系列)[java8, lambda, stream] Java8 学习 java8 能高效的...

网友评论

      本文标题:java8 in action行为参数化

      本文链接:https://www.haomeiwen.com/subject/gxzgfqtx.html