JAVA8函数式接口
java8 中内置的四大核心函数接口
*
* Consumer<T> :消费型接口
* void accept(T t)
* Supplier<T> :供给型接口
* T get()
*
* Function<T,R>:函数型接口
* R apply(T t)
* Predicate<T> :断言型接口
* boolean test(T t)
package airycode_java8.nice4; import org.junit.Test; 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; /**
*
* java8 中内置的四大核心函数接口
*
* Consumer<T> :消费型接口
* void accept(T t)
* Supplier<T> :供给型接口
* T get()
*
* Function<T,R>:函数型接口
* R apply(T t)
* Predicate<T> :断言型接口
* boolean test(T t)
* Created by admin on 2019/1/2.
*/
public class TestLambda { @Test
public void test1(){
happy(10000,(m)-> System.out.println("大保健,每次消费"+m));
} @Test
public void test2(){
getNumList(10,()-> (int)(Math.random()*100));
} //函数型接口
@Test
public void test3(){ String result = handler("aa", (str) -> str.toUpperCase());
System.out.println(result); } //断言型接口
@Test
public void test4(){ List<String> list = Arrays.asList("Hello","AA","CCCC");
List<String> resultList = filterStr(list, (str) -> str.length() > 3);
for (String str:resultList) {
System.out.println(str);
} } //需求:我要将满足条件的字符串放入集合中
public List<String> filterStr(List<String> list, Predicate<String> pre){
List<String> result = new ArrayList<>();
for (String str:list) {
if (pre.test(str)) {
result.add(str);
}
}
return result;
} //需求:用于处理字符串
public String handler(String string, Function<String,String> fun){
return fun.apply(string);
} public void happy(double money, Consumer<Double> consumer){
consumer.accept(money);
} public List<Integer> getNumList(int num, Supplier<Integer> supplier){
List<Integer> result = new ArrayList<>();
for (int i=0;i<num;i++) {
Integer n = supplier.get();
result.add(n);
}
return result;
} }
JAVA8函数式接口的更多相关文章
- java代码之美(14)---Java8 函数式接口
Java8 函数式接口 之前写了有关JDK8的Lambda表达式:java代码之美(1)---Java8 Lambda 函数式接口可以理解就是为Lambda服务的,它们组合在一起可以让你的代码看去更加 ...
- java代码(14) --Java8函数式接口
Java8函数式接口 之前有关JDK8的Lambda表达式 Java代码(1)--Java8 Lambda 函数式接口可以理解就是为Lambda服务的,它们组合在一起可以让你的代码看去更加简洁 一.概 ...
- Java8 函数式接口-Functional Interface
目录 函数式接口: JDK 8之前已有的函数式接口: 新定义的函数式接口: 函数式接口中可以额外定义多个Object的public方法一样抽象方法: 声明异常: 静态方法: 默认方法 泛型及继承关系 ...
- Java8函数式接口和Lambda表达式
两者关系: Lambda表达式就是函数式接口(FunctionalInterface)实现的快捷方式,它相当于函数式接口实现的实例,因为在方法中可以使用Object作为参数,所以把Lambda表达式作 ...
- java8 函数式接口——Function/Predict/Supplier/Consumer
Function 我们知道Java8的最大特性就是函数式接口.所有标注了@FunctionalInterface注解的接口都是函数式接口,具体来说,所有标注了该注解的接口都将能用在lambda表达式上 ...
- java8函数式接口(Functional Interface)
介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代 ...
- Java8 函数式接口 @FunctionalInterface以及常用Consumer<T>、Supplier<T>、Function<T, R>、Predicate<T>总结
首先看看什么是Lambda 表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递):最简单的Lambda表达式可由逗号分隔的参数列表.-> ...
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例 如何定义函数式接口
函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...
- Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等
一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...
- java8函数式接口小例子
// Function<T, R> -T作为输入,返回的R作为输出 Function<String,String> function = (x) -> {System.o ...
随机推荐
- Page7:能控性、能观性及其判据和对偶原理(2)[Linear System Theory]
内容包含连续时间时变系统的能控性和能观测性判据,离散时间线性系统的能控性和能观测性判据,以及对偶原理
- MySQ数据表设计
数据表概念 数据表是数据库中的基本对象元素,以记录(行)和字段(列)组成的二维结构用于存储数据.数据表由表结构和表内容两部分组成,先建立表结构,然后才能输入数据.数据表结构设计主要包括字段名称.字段类 ...
- instrument之Time Profiler总结
一.工欲善其事必先利其器 time profile时间分析工具用来检测应用CPU的使用情况,可以看到应用程序中各个方法正在消耗CPU时间,使用大量CPU不一定是个问题.客户端中动画就对CPU依赖就非常 ...
- [ovs] ovs开启日志debug
如题 [root@vrouter1 ~]# ovs-appctl vlog/set netdev:file:dbg [root@vrouter1 ~]# ovs-appctl vlog/set net ...
- Java之旅_面向对象_接口
参考摘自:http://www.runoob.com/java/java-interfaces.html 接口(interface)在Java中是一个抽象类型,是抽象方法的集合. 一个类通过imple ...
- Mongodb的下载和安装
下载 下载地址:http://dl.mongodb.org/dl/win32/x86_64 说明:zip是解压版的,msi是安装版的:安装过程中不知道什么原因3.6.x版本的安装会时等待时间很长并且 ...
- js禁用页面上右键菜单、选中和复制
有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...
- 对CountDownLatch的初步学习
CountDownLatch的中文翻译为"闭锁",在JDK1.5中 CountDownLatch类加入进来.为程序猿进行并发编程提供有利的帮助. 首先我们先看看JDK文档中对于Co ...
- find 命令 查找
find 查找文件和目录 find /home -name "" find 后接查找的目录,-name 后指定需要查找的文件名 文件名可以用*表示所有find /home -nam ...
- mysql 数据操作 目录
mysql 记录的增删改查 mysql 数据操作 单表查询 mysql 数据操作 多表查询