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,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一 ...
随机推荐
- bootstrap 学习 ---css样式学习
bootstrap 适用于响应式布局,移动设备优先的web项目 1.学习bootstrap需要引入bootstrap的css,jquery,bootstrap的js,注意:jquery文件必须在boo ...
- python后端向前台返回字节流文件
python后端向前台返回字节流文件,浏览器访问地址自动下载文件: from django.http.response import StreamingHttpResponse # 要下载的文件路径 ...
- 新iPhone又要提价,苹果靠什么基业长青?
在股神巴菲特一番煽情言论之后,苹果股价再创新高,达到187.67美元,总市值约为9450亿美元,正大踏步向着1万亿美元市值的目标前进,这是一条科技.经济.财经.社会等领域的头条新闻,遭到全球各界人士的 ...
- python3下scrapy爬虫(第四卷:初步抓取网页内容之抓取网页里的指定数据延展方法)
上卷中我运用创建HtmlXPathSelector 对象进行抓取数据: 现在咱们再试一下其他的方法,先试一下我得最爱XPATH 看下结果: 直接打印出结果了 我现在就正常拼下路径 只求打印结果: 现在 ...
- Java IO: Reader And Writer
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO的Reader和Writer除了基于字符之外,其他方面都与InputStre ...
- SPA(单页面web应用)和MPA(多页面web应用)的区别
转:https://blog.csdn.net/amaniz/article/details/79203562 vue多页面应用开发请参见: https://github.com/amunamuna/ ...
- NopCommerce上二次开发 触发器记录
最近要在NopCommerce上二次开发. 开发也就算了,该项目的架构设计很好,但性能不可谓不低. 扯远了,为了保持项目以后升级顺利,开次开发不允许在原项目基础上大改,只能以插件形式开发…… 因一个功 ...
- 吴裕雄--python学习笔记:爬虫
import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...
- js 原生轮播图插件
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MyBatis XML 配置文件 properties 元素扩展
在分析 MyBatis XML 配置文件 properties 元素时提到了三种配置方式,其中 property 子元素 和 properties 文件都比较容易理解,但是为什么还要提供一种代码参数传 ...