Java函数式接口Consumer】的更多相关文章

Consumer是java8提供的函数式接口之一,意思为消费者,接受参数而不返回值 void accept(T t); default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; } 方法示例 package jdk8.consumer; import java.u…
Java常用函数式接口--Consumer接口使用案例…
目录 Java 函数式接口 1. 函数式接口 1.1 概念 1.2 格式 1.3 函数式接口的使用 2. 函数式编程 2.1 Lambda的延迟执行 性能浪费的日志案例 使用Lambda表达式的优化 2.2 使用Lambda作为方法的参数&返回值 3. 常用的函数式接口 3.1 Supplier接口 练习:求数组元素的最大值 3.2 Consumer接口 默认方法:andThen 练习:格式化打印信息 3.3 Predicate接口 默认方法:and 默认方法:or 默认方法:negate 练习…
从JDK8开始java支持函数式编程,JDK也提供了几个常用的函数式接口,这篇主要介绍Consumer接口.文本介绍的顺序依次为: 源码介绍 使用实例 jdk内对Consumer的典型使用 扩展类介绍 源码介绍 12345678910111213141516171819202122232425262728 package java.util.function; import java.util.Objects; /** * * 表示“接受一个参数输入且没有任何返回值的操作“.不同于其它的函数式接…
函数式接口定义且只定义了一个抽象方法.函数式接口的抽象方法的签名称为函数描述符.Java 8的java.util.function包中引入了几个新的函数式接口. 1.Predicate java.util.function.Predicate<T>接口定义了一个名叫 test 的抽象方法,它接受泛型 T对象,并返回一个 boolean . 在需要表示一个涉及类型T的布尔表达式时,就可以使用这个接口. 比如,可以定义一个接受 String对象的 Lambda表达式,如下所示. @Function…
import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class Demo1 { public static void main(String[] args) { // 使用lambda表达式,如runnable Thread th1 = new Thread(() -> { System.out.println("lambda 创建线程"+Thread.cur…
Function 提供了一个抽象方法  R apply(T t) 接收一个参数 返回 一个值,还有两个默认方法和一个静态方法 compose 是一个嵌套方法,先执行before.apply() 得到运算后的值,再执行apply(),andthen则相反 identity 输入一个值则返回一个值,t -> t 实际是 apply() 这个方法的实现 另外还有BiFunction.toIntFunction.DoubleToIntFunction 等函数式接口,区别在于参数的不同,比如LongToI…
什么是函数式接口? 函数式接口是一种特殊的接口,接口中只有一个抽象方法. 函数式接口与Lambda表达式有什么关系? 当需要一个函数式接口的对象时,可以提供一个lambda表达式. package learnspringboot.xiao.learnjava; /** * @author xzy * @date 2019-11-17 15:24 * 说明:函数式接口 */ public interface FunctionalInterface { void aFunction(Object..…
Java8---函数式接口 Consumer---消费者(accept方法,Lambda与方法引用返回都是Consumer) Supplier---供给型(get方法,返回数据,与Optional可以联用) Predicate---谓词性(test方法,起到判断作用,) Function---功能性(apply方法,转换数据) 公司代码中看到过很多次Consumer和Function,一直搞不懂,今天做个整理,分成了匿名类,Lambda和方法引用 1.Consumer消费者 package Ja…
题目 下面的字符串数组当中有多条信息,请按照格式"姓名: XX 性别: XX"的格式将信息打印出来,要求将 打印姓名的动作为第一个Consumer接口的Lambda实例,将打印性别的动作作为第二个Consumer接口的 Lambda实例,将两个Consumer接口按照顺序拼接到一起 代码实现: package com.yang.Test.ConsumerStudy; import java.util.function.Consumer; /** * # 题目 * 下面的字符串数组当中有…
C# Action委托 VS JAVA Action 接口函数 1.c#:Action 封装一个方法,该方法不具有参数并且不返回值. 构造实体类类 using System; namespace ActionsDelegate { public class Name { private string instanceName; public Name(string name) { this.instanceName = name; } public void DisplayToConsole()…
第一种方式: 第二种方式:…
Java内置的四大核心函数式接口 Consumer:消费型接口 对类型为T的对象应用操作,包含方法:void accept(T t) public class TestLambda02 { public static void main(String[] args) { testConsumer(9999, (x) -> { System.out.println("打游戏花费:" + x); }); } public static void testConsumer(double…
写在前面 前面说过,判断一门语言是否支持函数式编程,一个重要的判断标准就是:它是否将函数看做是"第一等公民(first-class citizens)".函数是"第一等公民",意味着函数和其它数据类型具备同等的地位--可以赋值给某个变量,可以作为另一个函数的参数,也可以作为另一个函数的返回值. Java 8是通过函数式接口,赋予了函数"第一等公民"的特性. 本文将详细介绍Java 8中的函数式接口. 本文的示例代码可从gitee上获取:https…
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; import org.junit.Test; /* * J…
目录 函数式接口: JDK 8之前已有的函数式接口: 新定义的函数式接口: 函数式接口中可以额外定义多个Object的public方法一样抽象方法: 声明异常: 静态方法: 默认方法 泛型及继承关系 @FunctionalInterface: 高阶函数: Function: Operator: Predicate: Consumer: Supplier 总结 参考: 函数式接口: 函数式接口,首先是一个接口,然后就是在这个接口里面只能有一个抽象方法,但是可以有多个非抽象方法的接口. Java 8…
lambda表达式是jdk8的特性.lambda表达式的准则是:可推断,可省略. 常规代码写一个多线程 public class Main { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println("run "); } }).start(); } } lambda表达式写一个多线程 public class…
写在前面 Java8中内置了一些在开发中常用的函数式接口,极大的提高了我们的开发效率.那么,问题来了,你知道都有哪些函数式接口吗? 函数式接口总览 这里,我使用表格的形式来简单说明下Java8中提供的函数式接口. 四大核心函数式接口 首先,我们来看四大核心函数式接口,如下所示. 函数式接口 参数类型 返回类型 使用场景 Consumer消费型接口 T void 对类型为T的对象应用操作,接口定义的方法:void accept(T t) Supplier供给型接口 无 T 返回类型为T的对象,接口…
这一篇属于菜鸟级博客,只是介绍了一些在Java 8中新出现的一些很有用的接口,通过一些简单的例子加以说明,没有深入地阐述. 函数式接口 什么是函数式接口? 函数式接口,@FunctionalInterface,简称FI,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注,注意⚠️,这里的抽象方法指的是该接口自己特有的抽象方法,而不包含它从其上级继承过来的抽象方法,例如: @FunctionalInterface Interface FI{ abstract…
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接口也称为SAM接口,即Single Abstract Method interfaces. 函数式接口用途 它们主要用在Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上. 如定义了一个函数式接口如下: @FunctionalInterface interface Greeting…
Introduction to Functional Interfaces – A concept recreated in Java 8 Any java developer around the world would have used at least one of the following interfaces: java.lang.Runnable,java.awt.event.ActionListener, java.util.Comparator,java.util.concu…
函数式接口 概述:接口中只有一个抽象方法. 函数式接口,即适用于函数式编程场景的接口.而 Java 中的函数式编程体现就是 Lambda,所以函数式接口就是可以适用于 Lambda 使用的接口.只有确保接口中有且仅有一个抽象方法,Java 中的 Lambda 才能顺利地进行推导. 备注:“语法糖”是指使用更加方便,但是原理不变的代码语法.例如在遍历集合时使用的for-each语法,其实 底层的实现原理仍然是迭代器,这便是“语法糖”.从应用层面来讲,Java中的Lambda可以被当做是匿名内部 类…
函数式接口 概述:接口中只有一个抽象方法 下面介绍的可能很抽象,理解不了,至少在我看来单独的这几个借口是没有用的,跟最下面说的 Stream流一起用才会有效果 函数式接口,即适用于函数式编程场景的接口.而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适用于Lambda使用的接口.只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导. 备注:"语法糖"是指使用更加方便,但是原理不变的代码语法.例如在遍历集合时使用的for-each语法,其实…
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式. Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上. 如定义了一个函数式接口如下: @FunctionalInterface interface GreetingService { void sayMessage(String message); } 那么就可以使用Lambda表达式来表示该接口的一个实现(注…
这里面简单的讲一下java8中的函数式接口,Function.Consumer.Predicate和Supplier. 函数式接口例子 一.Function:接受参数,有返回参数 package com.linux.huhx.function; import java.util.function.Function; public class FunctionDemo { private static int operateValue(int value, Function<Integer, In…
一.什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口.  你可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明). 可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口. 简而言之,就是一个接口中有且仅有一个抽象方法,称之为函数式接口.(1.8存在默认接口和方法.) 举…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 44. 优先使用标准的函数式接口 现在Java已经有lambda表达式,编写API的最佳实践已经发生了很大的变化. 例如,模板方法模式[Gamma95],其中一个子类重写原…
Java 8 函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为lambda表达式. 函数式接口可以现有的函数友好地支持 lambda. JDK 1.8之前已有的函数式接口: java.lang.Runnable java.util.concurrent.Callable java.security.PrivilegedAction java.util.Comparator java.io.…
Java 8函数式接口functional interface的秘密 2014年10月29日 17:52:55 西瓜可乐520 阅读数:3729   目录 [−] JDK 8之前已有的函数式接口 新定义的函数式接口 函数式接口中可以额外定义多个抽象方法,但这些抽象方法签名必须和Object的public方法一样 声明异常 静态方法 默认方法 泛型及继承关系 函数式接口的交集 @FunctionalInterface 函数式接口(Functional Interface)是Java 8对一类特殊类…
参考:https://blog.csdn.net/jmj18756235518/article/details/81490966 函数式接口 定义:有且只有一个抽象方法的接口 Function<T, R>: y = f(x) T: x 输入参数, R: 返回结果,y 所有标注了@FunctionalInterface注解的接口都是函数式接口,所有标注了该注解的接口都将能用在lambda表达式上 特点:通过传入不同的Function,实现了在同一个方法中实现不同的操作,在实际开发中可以大大减少很…