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 内置的函数式接口的更多相关文章

  1. Java8内置的函数式接口

    JDK 1.8 API 包含了很多内置的函数式接口.其中就包括我们在老版本中经常见到的 Comparator 和 Runnable,Java 8 为他们都添加了 @FunctionalInterfac ...

  2. Java8内置的函数式编程接口应用场景和方式

    首先,我们先定义一个函数式编程接口 @FunctionalInterface public interface BooleanFunctionalInterface<T> { boolea ...

  3. Java8的新特性--函数式接口

    目录 函数式接口 什么是函数式接口 函数式接口的使用 Java8内置的四大核心函数式接口 一.Consumer:消费型接口(void accept(T t)) 二.Supplier:供给型接口(T g ...

  4. Java8内置的四大核心函数式接口

    package java_8; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import j ...

  5. java8新特性——四大内置核心函数式接口

    在前面几篇简单介绍了一些Lambda表达式得好处与语法,我们知道使用Lambda表达式是需要使用函数式接口得,那么,岂不是在我们开发过程中需要定义许多函数式接口,其实不然,java8其实已经为我们定义 ...

  6. Java8新特性_四大内置核心函数式接口

    Consumner : 消费型接口 Supplier :供给型接口 Function:函数式接口 Predicate:断言型接口 其他接口: 四大内置核心函数式接口: Consumner : 消费型接 ...

  7. Java8 Lambda表达式、函数式接口和方法引用

    目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...

  8. 微信内置浏览器私有接口WeixinJSBridge介绍(转)

    这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友.分享函数.隐藏工具栏.隐藏三个点按钮等功能,需要的朋友可以参考下 微信网页进入,右上角有三个小点,没错, ...

  9. 微信内置浏览器私有接口WinXinJsBridge介绍

    关于微信内置浏览器私有接口WeiXinJsBridge,只是之前接触过的一个微信公众号项目中遇到过,不过并没有深入研究过,可以说并没有了解过... 刚好今天无意中看到了这方面的知识,就补习一下,弥补一 ...

随机推荐

  1. 5-7 学生cpp成绩统计

    完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数. 仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据: int ID;//教师工号 ...

  2. Centos-Apache服务(2)

    title date tags layout CentOS6.5 Apache的增值服务 2018-09-03 Centos6.5服务器搭建 post 1.更改Apache的监听端口号 [root@l ...

  3. 对kotlin和java中的synchronized的浅谈

    synchronized在java中是一个关键字,但是在kotlin中是一个内联函数.假如分别在java和kotlin代码锁住同一个对象,会发生什么呢,今天写了代码试了试.首先定义people类 12 ...

  4. matplotlib,seaborn中文乱码问题的解决

    方法一:指定字体 import matplotlib.pyplot as plt myfont = matplotlib.font_manager.FontProperties(fname='/hom ...

  5. Cow Routing(最短路spfa)

    题:https://www.luogu.org/problem/P3115 题意:给出起点A,终点B,N条路线,下面没俩行一个路线,第一行是俩个数,第一个为这条路线的花费,第二个为这条路线经过的点数n ...

  6. vue element 关闭当前tab 跳转到上一路由

    方法一 this.$store.dispatch('delVisitedViews', this.$route); this.$router.go(-1); 方法二 this.$store.state ...

  7. 在CentOS安装CMake (CentOS7 64位适用)

    在CentOS安装CMake 转自:http://www.cnblogs.com/mophee/archive/2013/03/19/2969456.html 一.环境描述 1.系统:CentOS 6 ...

  8. 1076 Wifi密码 (15 分)

    题目:传送门 下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己 ...

  9. [LC] 142. Linked List Cycle II

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. To r ...

  10. OpenCV Canny 边缘检测

    #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #i ...