• 流管道剖析
    – JDK 中的流来源
    Java8 函数式编程和stream 学习一
    – 中间流操作
    中间操作负责将一个流转换为另一个流,中间操作包括 filter()(选择与条件匹配的元素)、map()(根据函数来转换元素)、distinct()(删除重复)、limit()(在特定大小处截断流)和 sorted()。一些操作(比如 mapToInt())获取一种类型的流并返回一种不同类型的流。
    Java8 函数式编程和stream 学习一
    – 终止流操作
    数据集的处理在执行终止操作时开始,比如缩减(sum() 或 max())、应用 (forEach()) 或搜索 (findFirst()) 操作。终止操作会生成一个结果或副作用。执行终止操作时,会终止流管道,如果您想再次遍历同一个数据集,可以设置一个新的流管道
    Java8 函数式编程和stream 学习一
  • 函数式编程
    1. 函数的无副作用
      函数的副作用指的是函数在调用的过程中,除了给出返回值外,还修改了函数外部的状态。
      函数是编程认为:函数的副作用应该尽量被避免
    2. 函数式编程的基础
      2.1 FunctionalInterface 注解:
      a. FunctionalInterface 用于表明接口是一个函数式接口
      b. 该接口 被定义为只包含一个抽象方法(任何被java.lang.Object 实现的方法都不能被视为抽象方法)
@FunctionalInterface
public interface  ErrorFunctionInterface {
    boolean equals(Object obj);   // 错误接函数式接口申明, equals 在Object中有实现。
}

@FunctionalInterface
public interface  ErrorFunctionInterface {
    //boolean equals(Object obj);
    void handle();   // 有且只能有一个抽象方法
    void handle2();
}

2.2 接口默认方法
java8 中, 使用default 关键字,可以在接口内部定义具有特定逻辑的实例方法。

public interface IDonkey {
    void eat();
    default void run(){
        System.out.println("Donkey run");
    }
}

2.3 lambda 表达式
lambda 表达式即匿名函数,没有函数名的函数体。lambda 表达式可以访问外部的局部变量,但是必须声明为final,才能保证在lambda 表达式中合法的访问它。

2.4 方法引用

Java8 函数式编程和stream 学习一

相关文章:

猜你喜欢
相关资源
相似解决方案