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. [FAQ] Goland 始终没有包代码的提示 ?

    表现:import 引入的包始终是红色的,表示没有找到引入的包. 注意,在这里开启Go Modules: 然后在 Exteneral Libraries 里看到 Go Modules 即可. Refe ...

  2. [FAQ] 设置 npm 镜像源

    查看 npm 源: $ npm config get registry> http://registry.npmjs.org/ 修改 npm 源: $ npm config set regist ...

  3. Util 应用框架 UI 全新升级

    Util UI 已经开发多年, 并在多家公司的项目使用. 不过一直以来, Util UI 存在一些缺陷, 始终未能解决. 最近几个月, Util 团队下定决心, 终于彻底解决了所有已知缺陷. Util ...

  4. 从SAP CRM上传设备到SAP ERP

    文档<Step by step to download equipment from ERP with hierarchy>描述了从ERP复制设备到CRM的步骤.默认情况下,ERP中的设备 ...

  5. WordPress CVE-2022-4230复现分析

    前言 开始CVE审计之旅 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击.默认情况下,具有管理选项功能 (a ...

  6. RemoteView 替代品和类似软件

    RemoteView 是一款远程控制软件,使您可以通过Internet连接远程访问计算机和移动设备,而不受时间和地点的限制. 您可以快速,安全地实时轻松地控制计算机和移动设备. 您可以使用我们的iOS ...

  7. C语言:将字符逆反排列再输出的问题

    代码: #include<stdio.h> #define N 10 int main() { /*输入字符串,str[10],将里面的字符逆反排列,再输出.*/ char ch[N]; ...

  8. SCSS随笔-mixin与@extend

    变量 定义变量 $color-white: white; 使用变量 body { background-color: $color-white; } @mixin 与 @include 定义mixin ...

  9. .NET8 Identity Register

    分享给需要帮助的人:记一次 IdentityAPI 中注册的源码解读:设置用户账户为未验证状态,以及除此之外更安全的做法: 延迟用户创建.包含了对优缺点的说明,以及适用场景. 在ASP.NET 8 I ...

  10. 带你彻底搞懂递归时间复杂度的Master公式

    1. 什么是Master公式 1.1 Master公式的定义 Master公式,又称为Master定理或主定理,是分析递归算法时间复杂度的一种重要工具,尤其适用于具有分治结构的递归算法. \[T(n) ...