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,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一 ...
随机推荐
- Normal Probability Plots|outlier
6.4 Assessing Normality; Normal Probability Plots The normal probability plot is a graphical techniq ...
- python学习笔记(13)常用模块列表总结
os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.chdir() 改变当前工作 ...
- [LC] 572. Subtree of Another Tree
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...
- Sampling Distribution of the Sample Mean|Central Limit Theorem
7.3 The Sampling Distribution of the Sample Mean population:1000:Scale are normally distributed with ...
- Office Lens:口袋中的扫描仪
Lens:口袋中的扫描仪" title="Office Lens:口袋中的扫描仪"> 编者按:开会时,你是否觉得白板上天马行空的讨论记录誊抄起来费时费事又难以共享- ...
- Google DevTools Explanation
Evaluating network performance The Network panel records information about each network operation in ...
- 如何使用Outlook 客户端配置其他邮箱客户端收发邮件
本文介绍Outlook2016客户端配置QQ邮箱收发邮件 1.打开Outlook客户端,文件->信息->-添加账户 2.输入需要添加的邮箱账户,点击连接 3.输入密码并连接 4.打开QQ邮 ...
- GBDT的理解和总结
2015/11/21 16:29:29 by guhaohit 导语: GBDT是非常有用的机器学习的其中一个算法,目前广泛应用于各个领域中(regression,classification,ran ...
- JXJJOI2018_T3_catch
题目描述 Lemon因为偶然的原因,当上了警察局长.而一上任,他就碰到了个大麻烦:追捕周克华. 周克华是人尽皆知的抢劫杀人犯,而就在几天前,他在Lemon辖区内的银行门口,枪杀了一名储户后逃之夭夭.L ...
- 玩转UITableView
UITableView这个iOS开发中永远绕不开的UIView,那么就不可避免的要在多个页面多种场景下反复摩擦UITableView,就算是刚跳进火坑不久的iOS Developer也知道实现UITa ...