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. 云小蜜 Dubbo3.0 实践:从微服务迁移上云到流量治理

    ​简介:阿里云-达摩院-云小蜜对话机器人产品基于深度机器学习技术.自然语言理解技术和对话管理技术,为企业提供多引擎.多渠道.多模态的对话机器人服务.17 年云小蜜对话机器人在公共云开始公测,同期在混合 ...

  2. 🎊这个 OpenTiny 开源项目的 CLI 可太牛了,两行命令创建一个美观大气的 Vue Admin 后台管理系统,有手就会,连我的设计师朋友都学会啦啦

    大家好,我是 Kagol,OpenTiny 开源社区运营,TinyVue 跨端.跨框架组件库核心贡献者,专注于前端组件库建设和开源社区运营. 近期尝试了下 OpenTiny 的 CLI 工具,不得不说 ...

  3. dotnet 使用 FormatterServices 的 GetUninitializedObject 方法在丢失 DLL 情况下能否执行

    在 dotnet 里面,可以使用 FormatterServices 的 GetUninitializedObject 方法可以实现只创建对象,而不调用对象的构造函数方法.而如果在使用此方法时,存在了 ...

  4. join分析:shuffle hash join、broadcast hash join

    Join 背景介绍 Join 是数据库查询永远绕不开的话题,传统查询 SQL 技术总体可以分为简单操作(过滤操作.排序操作 等),聚合操作-groupby 以及 Join 操作等.其中 Join 操作 ...

  5. 跟羽夏学 Ghidra ——简述

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  6. Python基础篇(流程控制)

    流程控制是程序运行的基础,流程控制决定了程序按照什么样的方式执行. 条件语句 条件语句一般用来判断给定的条件是否成立,根据结果来执行不同的代码,也就是说,有了条件语句,才可以根据不同的情况做不同的事, ...

  7. C++ 初始化列表(Initialization List)

    请注意以下继承体系中各class的constructors写法: 1 class CPoint 2 { 3 public: 4 CPoint(float x=0.0) 5 :_x(x){} 6 7 f ...

  8. openstack虚拟机用keep alive添加的VIP,其它机器无法访问

    neutron port-list |grep ipneutron port-update a7fbxxf6cc2 --allowed_address_pairs type=dict list=tru ...

  9. 微信小程序校园跑腿系统怎么做,如何做,要做多久

    ​ 在这个互联网快速发展.信息爆炸的时代,人人都离不开手机,每个人都忙于各种各样的事情,大学生也一样,有忙于学习,忙于考研,忙着赚学分,忙于参加社团,当然也有忙于打游戏的(还很多),但生活中的一些琐事 ...

  10. Java21 GA新特性-虚拟线程详解

    本文转载至:虚拟线程 - VirtualThread源码透视 - throwable - 博客园 (cnblogs.com) 一. 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟 ...