1. 什么是函数式接口
  2. 为什么要用函数式接口
  3. java.util.function和其他的函数式接口
  4. lamdba表达式
  5. 方法引用
  6. 流 Stream

1 什么是函数式接口

用@FunctionInterface注解的接口是函数式接口,那么不用@FunctionInterface注解的接口是不是函数式接口?什么接口能用@FunctionInterface注解呢?

函数式接口满足一个条件,只有一个抽象方法。在JDK的API中的,只有一个抽象方法的接口可以用@FunctionInterface注解。

2 为什么要用函数式接口

答案是为了行为参数化:行为参数化是为了让你处理频繁变更需求的一种软件开发模式,将变化的代码块抽离成一个行为,当做一个参数隔离出来。在开闭原则上,将容易变化的行为隔离出来,面向对象会要求你将隔离出来的行为进行抽象。

函数式接口即为这部分抽象,将变化抽象出来。为什么函数式接口只允许有一个抽象方法存在呢,为了使用lambda表达式。

3 java.util.function和其他的函数式接口

其他的函数式接口Runnable,Callable,Comparator以及java.util.function包下的Function,Predicate,Supplier,Consumer

  3.1 java.util.function.Predicate

  Predicate<T> 中只有一个抽象方法--boolean test(T t);

  3.2 java.util.function.Consumer

  Consumer<T>中有一个抽象方法 void accept(T t);接受一个泛型对象,返回一个空,消费此对象。

  3.3 java.util.function.Function

  Function<T,R>中有一个抽象方法 R  apply (T t);接受一个T对象,转换为一个R对象。Stream的map即为词原理,public static <T,R> List<R> map(List<T> list,Function<T,R> f),

这儿在使用此map方法的时候,lambda表达式是实现函数式接口Function<T,R>的apply方法,默认将T对象转换为R对象,Stream的泛型value在apply得到了fill。

  3.4 java.util.function.Supplier

  Supplier<T> 接口中有一个抽象方法  T get(); 参数为空,返回一个T对象,生产者。

4 lamdba表达式

  在所有指定方法参数为行为参数化的函数式接口中,都可以使用lamdba的方式进行调用   (函数式接口中唯一抽象方法的参数) -> {此抽象方法的实现},如果是一行代码可以去掉大括号

5 方法引用

  6.1 构造方法调用

  6.2静态方法的调用

  6.3实例方法的调用

6 流 Stream

  “集合谈的是数据,流讲的是计算”

  流的操作:筛选、切片、映射、查找、匹配和归约

函数式接口java.util.function的更多相关文章

  1. JAVA8的java.util.function包 @FunctionalInterface

    1 函数式接口java.util.function https://www.cnblogs.com/CobwebSong/p/9593313.html 2 JAVA8的java.util.functi ...

  2. Function接口 – Java8中java.util.function包下的函数式接口

    Introduction to Functional Interfaces – A concept recreated in Java 8 Any java developer around the ...

  3. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)

    Java 8 Lambda .MethodReference.function包 多年前,学校讲述C#时,就已经知道有Lambda,也惊喜于它的方便,将函数式编程方式和面向对象式编程基于一身.此外在使 ...

  4. 函数式接口的使用 (Function、Predicate、Supplier、Consumer)

    参考:https://blog.csdn.net/jmj18756235518/article/details/81490966 函数式接口 定义:有且只有一个抽象方法的接口 Function< ...

  5. 接口java.util.Map的四个实现类HashMap Hashtable LinkedHashMap TreeMap

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 :java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMa ...

  6. JAVA8的java.util.function包

    一 概述 name type description Consumer Consumer< T > 接收T对象,不返回值 Predicate Predicate< T > 接收 ...

  7. java.util.function 中的 Function、Predicate、Consumer

    函数式接口: 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 Lambda 表达式. Function ...

  8. 学习并发包常用的接口----java.util.concurrent

    1.常用的相关的接口 Callable.(Runnable).Futrue.RunnableFuture.RunnableSheduledFuture.ScheduledFuture.Executor ...

  9. Java 8函数式接口functional interface的秘密

    Java 8函数式接口functional interface的秘密 2014年10月29日 17:52:55 西瓜可乐520 阅读数:3729   目录 [−] JDK 8之前已有的函数式接口 新定 ...

随机推荐

  1. [POI2008]PER-Permutation

    [POI2008]PER-Permutation 带重复的康托展开! 根本不需要中国剩余定理就可以A掉! 看完题面你会惊人地发现这好像一个康托展开!(显然是不同的啦) 首先我们来看康托展开这个东西在数 ...

  2. Content-type解析

    一.是什么? 是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在. Content-Type(内容类型),一 ...

  3. java集合代码示例

    一.List ArrayList 使用List时,最好初始化容量. ArrayList的默认容量为10,每次扩容增0.5倍,假如要放置100个元素,需要多次扩容. List<String> ...

  4. Redis内存数据库

    remote dictionary server 远程字典服务器 Redis默认支持16个数据库,不同的应用应该使用不同的Redis实例存储数据.   支持数据类型:字符串,哈希散列,列表,集合,有序 ...

  5. 将jar包导入maven本地仓库

    https://blog.csdn.net/lvdaan/article/details/79760976 一.首先配置环境变量 在path 中添加 maven的bin 的路径 例如:D:\soft\ ...

  6. FZU Monthly-201909 tutorial

    FZU Monthly-201909 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 AB CD EF G H A. I ...

  7. ubuntu16 安装 qBittorrent ( Linux下BT下载图形工具 )

    qBittorrent 是QT编写的一款BT下载软件,支持FreeBSD, Linux, macOS, OS/2, Windows: 官网:https://www.qbittorrent.org/ 在 ...

  8. 一个android任务提醒程序

    需求: 运行建立多个提醒,每个提醒设置一个时间,到达指定时间后跳出提醒窗体 每个提醒有一个执行按钮,点击后保存执行记录,并且当天不再触发提醒窗体 提醒出现后如果任务还没执行,那么需要在30分钟后再次提 ...

  9. Sword CRC算法原理

    CRC校验原理 CRC校验其根本思想a.发送端和接收端约定一个整数 bb.发送端在原始数据帧后面附加一个数 k ,产生一个新的数据帧c.接收端接收到数据帧后,对接收的数据帧和整数 b 进行位异或操作, ...

  10. Python 使用 win32com 模块对 word 文件进行操作

    what's the win32com 模块 win32com 模块主要为 Python 提供调用 windows 底层组件对 word .Excel.PPT 等进行操作的功能,只能在 Windows ...