Java8 内置的函数式接口
1.Java8 内置的四大核心函数式接口
(1)Consumer<T> : 消费型接口
void accept(T t);
(2)Supplier<T> : 供给型接口
T get();
(3)Function<T, R> : 函数型接口
R apply(T t);
(4)Predicate<T> : 断言型接口
boolean test(T t);
2.四大核心函数式接口示例
/**
* 有参数无返回
* Consumer<T> 消费型接口
* void accept(T t);
*/
@Test
public void test1(){
happy(1000, (m) -> System.out.println("KTV消费"+m+"元"));
} public void happy(double money, Consumer<Double> con){
con.accept(money);
} /**
* 无参有返回
* Supplier<T> 供给型接口
* 生成一个指定长度的随机数集合
* T get();
* 需求:生成一个指定长度的随机数集合
*/
@Test
public void test2(){
List<Integer> list = getList(10, () -> {
Random r = new Random();
return r.nextInt(100);
}); for(Integer num : list) {
System.out.println(num);
}
} public List<Integer> getList(int num, Supplier<Integer> su){
List<Integer> list = new ArrayList<>(); for(int i = 0; i < num; i++){
list.add(su.get());
}
return list;
} /**
* 有参有返回
* Function<T, R> : 函数型接口
* R apply(T t);
* 需求:处理字符串
*/
@Test
public void test3() {
//去掉字符串前后空格
String str = strHandler("\t\t hello world ", (x) -> x.trim());
System.out.println(str); //将字符串转成大写
str = strHandler(str, (x) -> x.toUpperCase());
System.out.println(str);
} //处理字符串
public String strHandler(String str, Function<String, String> fun){
return fun.apply(str);
} /**
* 判断
* Predicate<T> : 断言型接口
* boolean test(T t);
* 需求:筛选出指定条件的字符串
*/
@Test
public void test4() {
List<String> list = Arrays.asList("java", "css", "jquery", "android", "ios", "python", "c++");
List<String> strList = filterStr(list, (t) -> t.length() > 3);
for(String str : strList){
System.out.println(str);
}
} //筛选字符串
public List<String> filterStr(List<String> list, Predicate<String> pre){
List<String> strList = new ArrayList<>(); for(String str : list) {
if(pre.test(str)){
strList.add(str);
}
}
return strList;
}
3.扩展函数式接口 四大函数四接口的子接口
(1)BiFunction<T, U, R> 参数类型:T, U 返回类型:R 用途:对类型为T, U参数应用操作,返回R类型的结果。包含方法为:R apply(T t, U u);
(2) UnaryOperator<T>(Funtion子接口) 参数类型:T 返回类型:T 用途:对类型为T的对象进行一元运算,并返回T类型的结果。包含方法为:T apply(T t);
(3) BinaryOperator<T>(BiFunction 子接口) 参数类型 :T, T 返回类型:T 用途:对类型为T的对象进行二元运算,并返回T类型的结果。包含方法为:T apply(T t1, T t2);
(4) BiConsumer<T, U> 参数类型:T, U 返回类型:void 用途:对类型为T,U的参数应用操作。包含方法为:void accept(T t, U u);
(5) ToIntFunction<T>,ToLongFunction<T>,ToDoubleFunction<T> 参数类型:T 返回类型:int,long,double 用途:分别计算 int,long,double值的函数
(6) IntFunction<R>,LongFunction<R>,DoubleFunction<R> 参数类型:int,long,double 返回类型:R 用途:参数分别为int,long,double类型的函数
Java8 内置的函数式接口的更多相关文章
- Java8内置的函数式接口
JDK 1.8 API 包含了很多内置的函数式接口.其中就包括我们在老版本中经常见到的 Comparator 和 Runnable,Java 8 为他们都添加了 @FunctionalInterfac ...
- Java8内置的函数式编程接口应用场景和方式
首先,我们先定义一个函数式编程接口 @FunctionalInterface public interface BooleanFunctionalInterface<T> { boolea ...
- Java8的新特性--函数式接口
目录 函数式接口 什么是函数式接口 函数式接口的使用 Java8内置的四大核心函数式接口 一.Consumer:消费型接口(void accept(T t)) 二.Supplier:供给型接口(T g ...
- Java8内置的四大核心函数式接口
package java_8; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import j ...
- java8新特性——四大内置核心函数式接口
在前面几篇简单介绍了一些Lambda表达式得好处与语法,我们知道使用Lambda表达式是需要使用函数式接口得,那么,岂不是在我们开发过程中需要定义许多函数式接口,其实不然,java8其实已经为我们定义 ...
- Java8新特性_四大内置核心函数式接口
Consumner : 消费型接口 Supplier :供给型接口 Function:函数式接口 Predicate:断言型接口 其他接口: 四大内置核心函数式接口: Consumner : 消费型接 ...
- Java8 Lambda表达式、函数式接口和方法引用
目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...
- 微信内置浏览器私有接口WeixinJSBridge介绍(转)
这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友.分享函数.隐藏工具栏.隐藏三个点按钮等功能,需要的朋友可以参考下 微信网页进入,右上角有三个小点,没错, ...
- 微信内置浏览器私有接口WinXinJsBridge介绍
关于微信内置浏览器私有接口WeiXinJsBridge,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一 ...
随机推荐
- Linux 设置开机启动项的几种方法
方法一:编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本. 所以我们可以直接在/etc/rc.local中添加启动脚本. $ vim /etc/rc.loca ...
- HTTP Status 400,400 (Bad Request)
400 (Bad Request) 点击添加按钮转跳没反应,控制台没报错,然后在Chrome上检查发现报错了 百度了一下,发现http Status 400这个错误大多是因为,jsp的form表单提交 ...
- centos7 ModuleNotFoundError: No module named 'users'
centos7下运行django项目时ModuleNotFoundError: No module named 'users' 由于我的项目目录是下面这样: 因为找不到users的路径 所以在mana ...
- cannot be found on object of type xx.CacheExpressionRootObject
0 环境 系统环境:win10 编辑器:IDEA 1 前言->环境搭建 1-1 pom依赖 <?xml version="1.0" encoding="UTF ...
- 吴裕雄--天生自然python学习笔记:python下载安装各种模块的whl文件网址
python下载安装各种模块的whl文件网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
- VS2010 常用的快捷键
1.强迫智能感知:Ctrl+J:2.强迫智能感知显示参数信息:Ctrl-Shift-空格:3.格式化整个块:Ctrl+K+F4.检查括号匹配(在左右括号间切换): Ctrl +]5.选中从光标起到行首 ...
- 前端-css-长期维护
############### CSS简介 ################ # CSS # HTML是骨架 # CSS是样式 # JS是动作 # css和html是分成两个文件编写的,这 ...
- interrupt 停止线程
该方法只是给线程设置了一个停止的标记 并不是真正的立即停止线程 interrupted() 测试当前线程是否已经中断 isInterrupted() 测试线程是否已经中断 停止线程的方法: .异常法 ...
- AngularJS前端以ArrayBuffer类型请求后端数据以生成文件时,出现异常的处理
.error(function(error){ var decodedString = String.fromCharCode.apply(null, new Uint8Array(error)); ...
- OpenCV 对两幅图像求和(求混合(blending))
#include <cv.h> #include <highgui.h> #include <iostream> using namespace cv; int m ...