Java关系表达式x y,java8--函数式接口,以及和Lambda表达式的关系
一:函数式接口
函数式接口其实本质上还是一个接口,但是它是一种特殊的接口: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表达式的关系相关推荐
- java 表达式写法_java内置核心4大函数式接口写法和lambda表达式
java.util.function , Java 内置核心四大函数式接口标准写发和lambda表达式 消费型接口,有一个输入参数,没有返回值 public static void main(Stri ...
- Java8函数式编程_9--使用Lambda表达式编写并发程序
1,免责声明,本文大部分内容摘自<Java8函数式编程>.在这本书的基础上,根据自己的理解和网上一些博文,精简或者修改.本次分享的内容,只用于技术分享,不作为任何商业用途.当然这本书是非常 ...
- java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)
之前写了一篇博客简单介绍了一下java 8发布新增的一些特性功能,java 8在2014年发布,距今也不少年了,但是lambda表达式使用并不熟练,现在一边学习,一边记录一下. 目录 一.Lambda ...
- Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习
函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...
- java8 ie_Java8语法糖之Lambda表达式_Hudie.的博客-CSDN博客
原文作者:编程一只蝶 原文标题:Java8语法糖之Lambda表达式 发布时间:2021-02-16 13:08:40 一.Lambda表达式简介 Lambda表达式,是Java8的一个新特性,也是J ...
- Java8新特性总结 - 3. Lambda表达式
所有示例代码打包下载 : 点击打开链接 Java8新特性 : 接口新增默认方法和静态方法 Optional类 Lambda表达式 方法引用 Stream API - 函数式操作流元素集合 Date/ ...
- 《core JAVA for the impatient》阅读笔记(2) lambda表达式
lambda表达式 只有一个抽象方法的接口对象,就可以提供一个lambda表达式(函数式接口) 将lambda表达式放入类型为函数式接口的变量中,这样它就被转换为该接口的实例 list.removeI ...
- Java新特性:Java8函数式接口与Lambda表达式(一)
摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...
- Java8函数式接口与Lambda表达式
摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...
- Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)
Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...
最新文章
- java伪装成mysql从节点_开发时java项目启动时需要连mysql等,有没有什么工具可以mock连接使得启动顺利不报错?...
- 说一下 JVM 的主要组成部分?及其作用?
- RubyMine 1.0加入Ruby IDE大家庭
- C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串
- linux安装apache+mysql+php3.8练习环境
- 深度优先搜索——自然数的拆分问题(洛谷 P2404)
- win查看php 启动状态,windows上如何查看nginx是否启动
- IntelliJ远程调试教程
- mysql 5.7 error log_MySQL · 特性分析 · 5.7 error log 时区和系统时区不同
- 传智播客 python 私有化学习笔记
- 安卓手机状态栏显示秒_如何让状态栏时间精确到秒显示
- ThinkPHP5-商城小程序-web技术栈|
- 详细讲解Socket服务器与多客户端的长链接通信(含Demo)
- 生鲜行业采购管理系统把控采购成本,实现精细化管理
- matlab的fft点数,MATLAB快速傅里叶变换(fft)函数详解
- Photoshop技能167个经典的Photoshop技巧大全
- OpenHarmony开发环境WSL2配置踩坑
- 大型医院挂号系统(数据结构课设)
- 基于javaee的社区医院远程挂号系统
- matlab 非线性方程组 最小值,如何在matlab中求解非线性方程组的参数值