函数式表达式基本类型及固定类型 demo
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的更多相关文章
- Lambda 表达式(使用前提、“类型推断”、作用、优缺点、Lambda还能省略的情况)
Lambda 表达式(使用前提."类型推断".作用.优缺点.Lambda还能省略的情况) 1.Lambda使用前提: (1)使用Lambda必须有接口,且接口只有一个抽象方法(即函 ...
- Lambda表达式可以被转换为委托类型
void Main() { //向Users类中增加两人; List<Users> user=new List<Users>{ new Users{ID=1,Name=&quo ...
- C-基础:表达式中存在有符号类型和无符号类型时,都自动转换为无符号类型
void foo(void) { unsigned ; ; (a+b > ) puts("> 6") : puts("<= 6"); } 答案 ...
- HandlerMethodArgumentResolver(二):Map参数类型和固定参数类型【享学Spring MVC】
每篇一句 黄金的导电性最好,为什么电脑主板还是要用铜? 飞机最快,为什么还有人做火车? 清华大学最好,为什么还有人去普通学校? 因为资源都是有限的,我们现实生活中必须兼顾成本与产出的平衡 前言 上文 ...
- typescript枚举,类型推论,类型兼容性,高级类型,Symbols(学习笔记非干货)
枚举部分 Enumeration part 使用枚举我们可以定义一些有名字的数字常量. 枚举通过 enum关键字来定义. Using enumerations, we can define some ...
- 匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置
0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到“类型”,话题的热度就会立马升温,因为很多似是而非.或者片面的概念常常被人们当做是全面和正确的答案.加之最近在园子看到有人翻译的& ...
- Java泛型-内部原理: 类型擦除以及类型擦除带来的问题
一:Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除.Java的泛型基本上都是在编译 ...
- C++11新特性:自动类型推断和类型获取
声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-functi ...
- 初窥C++11:自己主动类型推导与类型获取
auto 话说C语言还处于K&R时代,也有auto a = 1;的写法.中文译过来叫自己主动变量.跟c++11的不同.C语言的auto a = 1;相当与 auto int a = 1;语句. ...
- js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math
数据类型 变量.作用域及内存 基础类型(primitive value):Undefined.Null.Boolean.Number和String.这些类型在内存中分别占用固定大小的空间,他们的值保存 ...
随机推荐
- Let's Fluent:更顺滑的MyBatis
简介: 只需瞅一眼Google Trends上全球Java界最热门的两款SQL映射框架近一年的对比数字,就不难了解其实力分布:在此领域,MyBatis早已占领东亚地区开发者市场,并以绝对优势稳居中国最 ...
- [GPT] 如何让 vue-router 打开新窗口
在Vue Router中打开新窗口可以通过使用 <router-link> 组件的 target 属性来实现.将 target 属性设置为`"_blank"`将会在 ...
- [PHP] Laravel-admin 模型表格-列的显示-链接: 关联关系的跳转链接
link 将字段显示为一个链接. // link方法不传参数时,链接的`href`和`text`都是当前列的值 $grid->column('homepage')->link(); // ...
- WPF 自定义控件入门 Focusable 与焦点
自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 默认情况下的自定义控件是没有带可获取焦点的功能的,例如编写一个继承 FrameworkElement ...
- 2.生产环境k8s-1.28.2集群小版本升级到1.28.5
环境:https://www.cnblogs.com/yangmeichong/p/17956335 # 流程:先升级master,再升级node # 1.备份组件参考:https://kuberne ...
- kubernetes-1.26安装
一.环境准备 k8s集群角色 IP 主机名 安装组件 配置 控制节点 192.168.10.10 master apiserver.controller-manager.scheduler.etcd. ...
- 【Flink入门修炼】2-3 Flink Checkpoint 原理机制
如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一.什么是 Checkpoint? Chec ...
- HAL库移植RT-Thread Nano
一.移植RT-Thread Nano准备 keil软件 CubeMx软件 STM32 CubeMx使用教程:https://www.cnblogs.com/jzcn/p/16313803.html S ...
- 记录一个解决固定定位内容不能滚动的方法(vant组件tab必用的css样式)
vant组件下边是循环出来的,在开发中这部分必定是个单独的组件,内容溢出时添加滚动的样式,当然这个需要写在外部引入的自定义的vant组件样式当中 .van-tabs__content{ width: ...
- Mybatis学习三(动态sql语句)
动态sql语句主要为以下语句 1.动态SQL:if 语句2.动态SQL:if+where 语句3.动态SQL:if+set 语句4.动态SQL:choose(when,otherwise) 语句5.动 ...