1.常见类型及使用

import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator; /**
* @author
*
*/
public class FunctionTest { /**
* @param args
*/
public static void main(String[] args) {
// Consumer 代表一个输入
Consumer<String> c2 = (a) -> {System.out.println("11打算参数:" + a);};
Consumer<String> c3 = a -> {System.out.println("22打算参数:" + a);};
Consumer<String> c4 = (String a) -> {
//具体的业务逻辑
System.out.println("33打算参数:" + a);
};
c2.accept("这是一个入参参数啊111"); //消费
c3.accept("这是一个入参参数啊222"); //消费
c4.accept("这是一个入参参数啊333"); //消费 //输入2个参数,入参数据类型可以不一样
// BiConsumer 代表两个输入
BiConsumer<String,Integer> bc =(x,y) -> {
System.out.println("x+y"+x+y);
};
bc.accept("中国",100); //输出
// Supplier 代表一个输出
Supplier<String> s1 = () -> "hello";
Supplier<String> s2 = () -> {
//具体的业务逻辑
return "hello22";
};
System.out.println("supplier1="+s1.get());
System.out.println("supplier2="+s2.get()); //输入,输出参数类型不同
// Function 代表一个输入,一个输出(一般输入和输出是不同类型的) 也可以相同
Function<String, Integer> f1 = (str) -> Integer.valueOf(str);
Function<String, Integer> f2 = (String str) -> Integer.valueOf(str);
Function<String, Integer> f3 = (String str) -> {
//具体的业务逻辑
return Integer.valueOf(str);
};
Function<String, String> f4 = (str) -> "hello " + str; System.out.println("f1="+f1.apply("200"));
System.out.println("f2="+f2.apply("300"));
System.out.println("f3="+f3.apply("400"));
System.out.println("f4="+f4.apply("中国")); //输入输出参数相同
//unary一元操作
// UnaryOperator 代表一个输入,一个输出(输入和输出是相同类型的)
UnaryOperator<String> u1 = (str) -> "hello"+str;
System.out.println("u1="+u1.apply("chinese")); //BiFunction 代表两个输入,一个输出(一般输入和输出是不同类型的)
BiFunction<String,String,Integer> bf = (x,y) -> x.length()+y.length();
int length = bf.apply("abc","def");
System.out.println("字符串长度="+length); //BinaryOperator 代表两个输入,一个输出(输入和输出是相同类型的)
//二元操作
BinaryOperator<String> bo = (x,y) -> x+y;
String str = bo.apply("中国", "上海");
System.out.println(str); } }

2.固定类型及使用

import java.util.function.BiPredicate;
import java.util.function.BooleanSupplier;
import java.util.function.DoubleBinaryOperator;
import java.util.function.IntConsumer;
import java.util.function.LongFunction;
import java.util.function.Predicate; /**
* @author
*
*/
public class Function2Test { /**
* @param args
*/
public static void main(String[] args) {
//判断返回boolean
BiPredicate<Integer, Integer> bp = (x,y) -> {return x+y == 100;};
System.out.println(bp.test(20, 80));
System.out.println(bp.test(20, 81)); //输出 布尔值
BooleanSupplier bs = () -> true;
BooleanSupplier bs2 = () -> false;
System.out.println(bs.getAsBoolean());
System.out.println(bs2.getAsBoolean()); //固定类型
DoubleBinaryOperator dbo = (x,y) -> x+y;
System.out.println(dbo.applyAsDouble(1.0, 2.0)); //固定类型
IntConsumer ic = (x) -> {System.out.println(x+ 100);};
ic.accept(500); //固定类型
LongFunction<String> lf = (x) -> String.valueOf(x);
System.out.println(lf.apply(1000l)); Predicate<Integer> p = (x) -> {return x == 100;};
System.out.println(p.test(100));
System.out.println(p.test(200)); } }

函数式表达式基本类型及固定类型 demo的更多相关文章

  1. Lambda 表达式(使用前提、“类型推断”、作用、优缺点、Lambda还能省略的情况)

    Lambda 表达式(使用前提."类型推断".作用.优缺点.Lambda还能省略的情况) 1.Lambda使用前提: (1)使用Lambda必须有接口,且接口只有一个抽象方法(即函 ...

  2. Lambda表达式可以被转换为委托类型

    void Main() { //向Users类中增加两人; List<Users> user=new List<Users>{ new Users{ID=1,Name=&quo ...

  3. C-基础:表达式中存在有符号类型和无符号类型时,都自动转换为无符号类型

    void foo(void) { unsigned ; ; (a+b > ) puts("> 6") : puts("<= 6"); } 答案 ...

  4. HandlerMethodArgumentResolver(二):Map参数类型和固定参数类型【享学Spring MVC】

    每篇一句 黄金的导电性最好,为什么电脑主板还是要用铜? 飞机最快,为什么还有人做火车? 清华大学最好,为什么还有人去普通学校? 因为资源都是有限的,我们现实生活中必须兼顾成本与产出的平衡 前言 上文 ...

  5. typescript枚举,类型推论,类型兼容性,高级类型,Symbols(学习笔记非干货)

    枚举部分 Enumeration part 使用枚举我们可以定义一些有名字的数字常量. 枚举通过 enum关键字来定义. Using enumerations, we can define some ...

  6. 匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置

    0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非.或者片面的概念常常被人们当做是全面和正确的答案.加之最近在园子看到有人翻译的& ...

  7. Java泛型-内部原理: 类型擦除以及类型擦除带来的问题

    一:Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除.Java的泛型基本上都是在编译 ...

  8. C++11新特性:自动类型推断和类型获取

    声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-functi ...

  9. 初窥C++11:自己主动类型推导与类型获取

    auto 话说C语言还处于K&R时代,也有auto a = 1;的写法.中文译过来叫自己主动变量.跟c++11的不同.C语言的auto a = 1;相当与 auto int a = 1;语句. ...

  10. js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math

    数据类型 变量.作用域及内存 基础类型(primitive value):Undefined.Null.Boolean.Number和String.这些类型在内存中分别占用固定大小的空间,他们的值保存 ...

随机推荐

  1. PyFlink 教程(三):PyFlink DataStream API - state & timer

    简介: 介绍如何在 Python DataStream API 中使用 state & timer 功能. 一.背景 Flink 1.13 已于近期正式发布,超过 200 名贡献者参与了 Fl ...

  2. 记联软 UniAccess 导致 NSIS 安装包启动进程失效

    本文记录联软 UniAccess 注入的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 导致 NSIS 安装包启动进程失效 ...

  3. zabbix-server-pgsql docker镜像说明

    0 说明 zabbix-server-pgsql在docker hub的官方说明,供查阅 1 Environment Variables 1.1 基本变量 When you start the zab ...

  4. ruby 常用代码片段

    # 文件的当前目录 puts __FILE__ # string.rb # 文件的当前行 puts __LINE__ # 6 #文件的当前目录 puts __dir__ #/media/haima/3 ...

  5. DNS(5) -- 主从dns

    目录 1. DNS主从服务器 1.1 主从服务器概述 1.2 主从DNS实现 1.2.1 主从DNS实现要点 1.2.2 主DNS服务器配置 1.2.3 从DNS服务器配置 1.2.4 测试主从同步 ...

  6. three.js教程1-快速入门

    1.项目开发环境引入threeJs 如果采用的是Vue + threejs或React + threejs技术栈,threejs就是一个js库,直接通过npm命令行安装就行. npm安装特定版本thr ...

  7. 推荐一个好用的.net开发框架

    企业应用开发平台(Enterprise Develop Platform),以下简称EDP.EDP是一套集完整组织架构,全面权限体系,以及各类基础功能于一体的基于.net的企业应用开发平台.其最大的特 ...

  8. C 语言编程 — 编程实践

    目录 文章目录 目录 前文列表 程序示例 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...

  9. 数据库中存储bool对象的数据,使用Bit和Integer有什么区别,性能上有多大的差异

    在数据库中存储布尔(Boolean)值时,常见的两种选择是使用 BIT 类型或 INTEGER 类型.两者在存储.性能和使用上的区别如下: 1. BIT 类型 存储:BIT 类型专门用于存储布尔值.通 ...

  10. QT中各控件的属性和方法

    1.在QT6中,QLabel类具有许多属性和方法,以下是QLabel类的常见属性和调用方法:setText(const QString &text):设置标签的文本内容.setAlignmen ...