一:函数式接口

函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method)。

jdk8的lambda表达式的函数式接口主要有:

image.png

二:Predicate

确定入参为T的参数,是否满足方法中的条件。

涉及到的lambda表达式方法主要是 filter(Predicate predicate);

demo:

import java.util.Arrays;

import java.util.List;

import java.util.function.Predicate;

public class PredicateDemo {

public static void main(String[] args) {

//给list添加参数

List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);

System.out.println("输出所有参数字:");

eval(list, n -> true);

System.out.println("\n输出能被2整除的数字:");

eval(list, n -> n%2==0);

System.out.println("\n输出大于3的数字:");

eval(list, n-> n > 3 );

}

//自定义方法

public static void eval(List list, Predicate predicate) {

for(Integer n: list) {

if(predicate.test(n)) {

//可以将满足条件的参数返回,这里只做输出

System.out.print(n + " ");

}

}

}

}

2 Function

对类型T的入参,返回类型是R的对象,这个函数主要是调用内部的apply方法,T apply(R)

主要针对的stream方法:map

demo

public class Operation{

public static final int addOne(int a){

return a+1;

}

public static int oper(int a, Function action){

return action.apply(a);

}

public static void main(String[] args){

int x = 1;

int y = oper(x,x -> addOne(x));//这里可以换成方法引用的写法 int y =

oper(x,Operation::addOne)

System.out.printf("x= %d, y = %d", x, y); // 打印结果 x=1, y=2

y = oper(x, x -> x + 3 ); // y = 4

y = oper(x, x -> x * 3 ); // y = 3

}

}

3 Consumer接口,顾名思义将T为入参的对象进行消费,无返回。

public static void main(String[] args) {

Consumer printString = s -> System.out.println(s);

printString.accept("helloWorld!");

//控制台输出 helloWorld!

}

4 Supplier接口 ,返回对象为T的方法,没有入参

public static void main(String args[]){

Supplier getInstance = () -> "HelloWorld!";

System.out.println(getInstance.get());

}

Java关系表达式x y,java8--函数式接口,以及和Lambda表达式的关系相关推荐

  1. java 表达式写法_java内置核心4大函数式接口写法和lambda表达式

    java.util.function , Java 内置核心四大函数式接口标准写发和lambda表达式 消费型接口,有一个输入参数,没有返回值 public static void main(Stri ...

  2. Java8函数式编程_9--使用Lambda表达式编写并发程序

    1,免责声明,本文大部分内容摘自<Java8函数式编程>.在这本书的基础上,根据自己的理解和网上一些博文,精简或者修改.本次分享的内容,只用于技术分享,不作为任何商业用途.当然这本书是非常 ...

  3. java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)

    之前写了一篇博客简单介绍了一下java 8发布新增的一些特性功能,java 8在2014年发布,距今也不少年了,但是lambda表达式使用并不熟练,现在一边学习,一边记录一下. 目录 一.Lambda ...

  4. Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习

    函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...

  5. java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客

    原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...

  6. Java8新特性总结 - 3. Lambda表达式

    所有示例代码打包下载 : 点击打开链接 Java8新特性 :  接口新增默认方法和静态方法 Optional类 Lambda表达式 方法引用 Stream API - 函数式操作流元素集合 Date/ ...

  7. 《core JAVA for the impatient》阅读笔记(2) lambda表达式

    lambda表达式 只有一个抽象方法的接口对象,就可以提供一个lambda表达式(函数式接口) 将lambda表达式放入类型为函数式接口的变量中,这样它就被转换为该接口的实例 list.removeI ...

  8. Java新特性:Java8函数式接口与Lambda表达式(一)

    摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...

  9. Java8函数式接口与Lambda表达式

    摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...

  10. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

最新文章

  1. java伪装成mysql从节点_开发时java项目启动时需要连mysql等,有没有什么工具可以mock连接使得启动顺利不报错?...
  2. 说一下 JVM 的主要组成部分?及其作用?
  3. RubyMine 1.0加入Ruby IDE大家庭
  4. C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串
  5. linux安装apache+mysql+php3.8练习环境
  6. 深度优先搜索——自然数的拆分问题(洛谷 P2404)
  7. win查看php 启动状态,windows上如何查看nginx是否启动
  8. IntelliJ远程调试教程
  9. mysql 5.7 error log_MySQL · 特性分析 · 5.7 error log 时区和系统时区不同
  10. 传智播客 python 私有化学习笔记
  11. 安卓手机状态栏显示秒_如何让状态栏时间精确到秒显示
  12. ThinkPHP5-商城小程序-web技术栈|
  13. 详细讲解Socket服务器与多客户端的长链接通信(含Demo)
  14. 生鲜行业采购管理系统把控采购成本,实现精细化管理
  15. matlab的fft点数,MATLAB快速傅里叶变换(fft)函数详解
  16. Photoshop技能167个经典的Photoshop技巧大全
  17. OpenHarmony开发环境WSL2配置踩坑
  18. 大型医院挂号系统(数据结构课设)
  19. 基于javaee的社区医院远程挂号系统
  20. matlab 非线性方程组 最小值,如何在matlab中求解非线性方程组的参数值

热门文章

  1. Android NDK学习(2)
  2. 通过案例学调优之--和 LOG BUFFER 相关的主要 Latch
  3. 品《阿里巴巴大数据实践-大数据之路》一书(上)
  4. 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言
  5. 《SpringBoot揭秘:快速构建微服务体系》—第1章1.2节微服务因何而生
  6. mysql 协议的processInfo命令包及解析
  7. 虚拟环境--virtualenv
  8. 网站集成QQ登录功能
  9. python 为抓取而生
  10. js 回调函数 精析