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,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一 ...
随机推荐
- 快手为什么要全资收购Acfun?
近日据媒体报道,快手已完成对「Acfun」以下简称A站的全资收购.未来A站仍将保持独立品牌和独立运营以及原有团队的独立发展.近年来,A站可谓命途多舛.相比隔壁B站风风光光顺利上市且成为真正的二次元大本 ...
- java成神之路
一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://i ...
- 69)PHP,cookie的有效域
(1)默认情况下,cookie只在当前域下有效,比如我的loclhost/PHP或者shop.wang.com下有效. (2)其实一个域就代表一个网站, 以及域名就比如:www.baidu.com ...
- linux 下安装及查看java的安装路径
一.Linux下安装JDK 1.下载文件 从官网下载合适版本如:jdk-8u191-linux-x64.tar.gz 2.安装文件 1.在 /usr/ 目录下创建 java文件夹mkdir /usr/ ...
- python3下scrapy爬虫(第六卷:利用cookie模拟登陆抓取个人中心页面)
之前我们爬取的都是那些无需登录就要可以使用的网站但是当我们想爬取自己或他人的个人中心时就需要做登录,一般进入登录页面有两种 ,一个是独立页面登陆,另一个是弹窗,我们先不管验证码登陆的问题 ,现在试一下 ...
- freeRadius日志关闭
vim /etc/raddb/radiusd.conf #file = ${logdir}/radius.log file = /dev/null vim /etc/raddb/modules/det ...
- Java日期时间API系列12-----Jdk8中java.time包中的...
package com.xkzhangsan.time.test; import java.time.LocalDateTime;import java.util.Date; import com.x ...
- curl模拟
header('content-type:text/html;charset=utf-8');function curlPost($url,$data,$method){ $ch = curl_ini ...
- 吴裕雄--python学习笔记:爬虫基础
一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...
- 解析Maven的settings.xml文件
一.镜像问题 1.为什么需要配置maven国内镜像? 在不配置镜像的情况下,maven默认会使用中央库.--https://repo.maven.apache.org/maven2 maven中央库在 ...