java8的4大核心函数式接口

//java8的4大核心函数式接口//1.Consumer<T>:消费性接口//需求:public void happy(double money, Consumer<Double> consumer){    consumer.accept(money);}@Testpublic void test(){    happy(1000,(e)-> System.out.println("happy消费了"+ e +"元"));}//2.Supplier<T> 供给型接口//T get();//需求:产生一定数量整数,并放进集合中public List<Integer> getList(int size, Supplier<Integer> supplier){    List<Integer> list = new ArrayList<>();    for (int i = 0; i < size; i++) {        Integer num = supplier.get();        list.add(num);    }    return list;}

@Testpublic void test2(){    List<Integer> list = getList(10,()->(int)(Math.random()*100));    for (Integer num :            list) {        System.out.println(num);    }}

//3.函数型接口//Function<T,R>//R apply<T t>//需求:去除首尾空格public String strHandler(String str, Function<String,String> fun){    return fun.apply(str);}@Testpublic void test3(){    String strTrim = strHandler("\t\t\txsjifcdsnkjfhs   ",(e)->e.trim());    System.out.println(strTrim);}//4.Predicate 断言型接口//boolean test(T t)//将满足条件的字符串放进集合public List<String> getNewList(List<String> list , Predicate<String> pre){    List<String> newList = new ArrayList<>();    for (String str :            list) {        if(pre.test(str)){            newList.add(str);        }

    }    return newList;}@Testpublic void test4(){    List<String> list = java.util.Arrays.asList("adsj","xjsai","sdjasio","ws");    List<String> li = getNewList(list,(s)->s.length()>3);    for (String str :         li) {        System.out.println(str);    }

}

原文地址:https://www.cnblogs.com/yunqing/p/9221117.html

时间: 2024-11-04 11:47:17

java8的4大核心函数式接口的相关文章

java8中内置的四大核心函数式接口

java8中内置的四大核心函数式接口 Consumer<T>:消费型接口 void accept(T t) //Consumer<T> 消费型接口 public void happy(double money, Consumer<Double> con){ con.accept(money); } Supplier<T>:供给型接口 T get(); //Supplier<T> 供给型接口 //需求:产生一些整数,并放入集合中 public Li

java8之lambda表达式(函数式接口)

在Java中有许多已有的接口都需要封装代码块,例如:Runnable或者Comparator.lambda表达式与这些接口是向后兼容的.对于只包含一个抽象方法的接口,你可以通过lambda表达式来创建该接口的对象,这种接口被称为函数式接口.注意:Java8中接口可以声明非抽象的方法. 为了演示函数式接口转换,我们以Arrays.sort方法为例.该方法的第二个参数需要一个Comparator接口(该接口只含有一个方法)的实例.接下来我们编写一个简单的lambda表达式: Arrays.sort(

12函数式接口、方法引用

12.1  函数式接口 12.1.1 概念 1.函数式接口在Java中是指:有且仅有一个抽象方法的接口. 2.函数式接口,即适用于函数式编程场景的接口,而Java中的函数式编程体现就是Lambda,所有函数式接口就是可以适用于Lamnda使用的接口,只有确保接口中有且仅有一个抽象方法,java中的Lambda才能顺利地进行推导. 3.语法糖的定义:是指使用更加方便,但是原理不变的代码语法,例如在遍历集合时使用的for-each语法,其实底层的实现原理 仍然是迭代器,这就是语法糖,从应用层讲, j

Java8 新特性----函数式接口,以及和Lambda表达式的关系

这里来讲解一下Java8 新特性中的函数式接口, 以及和Lambda 表达式的关系.看到过很多不少介绍Java8特性的文章,都会介绍到函数式接口和lambda表达式,但是都是分别介绍,没有将两者的关系说明清楚,在这里,把自己的理解整理如下: 一.函数式接口: 函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口(Single Abstract Method).定义了这种类型的接口,使得以其为参数的方法,可以在调用时,使用一个lambda表达式作为参数.从另一个方面说,一旦我

java8函数式接口(Functional Interface)

介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代表的一种契约, 一种对某个特定函数类型的契约.Lambda表达式不能脱离上下文而存在,它必须要有一个明确的目标类型(interface),而这个目标类型就是某个函数式接口. java8之前已经存在的函数式接口有很多,比如java.lang.Runnable.java.util.concurrent.

乐字节-Java8核心特性实战之函数式接口

什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. java8引入@FunctionalInterface 注解声明该接口是一个函数式接口. 语法 抽象方法有且仅有一个 接口使用@FunctionalInterface 注解进行标注 接口中可以存在默认方法和静态方法实现 如下形式: /** * 定义函数式

java8简单入门--函数式接口 @FunctionalInterface

1.介绍 看了几篇关于 java8 入门的例子,其中引入了许多令人期待已久的特性(虽然我没有过这样的体会),但不管你的代码是普通青年款还是文艺青年款,你都可以从被 java8 的重新组织的代码看到她的简洁之处,不得不让我对这些新入贵圈(java圈)的小鲜肉做一些记录,以便我能很好的利用他们. 最大的一个特点莫非就是引入了"函数式"编程这一个概念(都是剽窃的别的语言来的),还有那么多新奇的词语,比如"语法糖""闭包""显式|隐式函数&qu

Java8函数式接口以及lambda表达式实践

最近重新深入了解和学习了Java8的函数式接口以及lambda表达式,发现以前写的代码大多都是伪-函数表达式,因此重新精炼了一下的这部分代码,仅供参考,如有更好的方式,欢迎在评论区留言. 1.计算订单总金额 订单总金额一般是在后台循环叠加每个购买商品的金额已获取到,通常的方式如下 BigDecimal totalAmount = new BigDecimal(0); for (VenditionProduct venditionProduct : venditionVo.getVendition

Java8 之 lambda 表达式、方法引用、函数式接口、默认方式、静态方法

今天我来聊聊 Java8 的一些新的特性,确实 Java8 的新特性的出现,给开发者带来了非常大的便利,可能刚刚开始的时候会有点不习惯的这种写法,但是,当你真正的熟悉了之后,你一定会爱上这些新的特性的,这篇文章就来聊聊这些新特性. lambda 表达式 lambda 表达式在项目中也是用到了,这种新的语法的加入,对于使用 Java 多年的我,我觉得是如虎添翼的感觉哈,这种新的语法,大大的改善了以前的 Java 的代码,变得更加的简洁,我觉得这也是为什么 Java8 能够很快的流行起来的原因吧.