java基础---->java8中的函数式接口
这里面简单的讲一下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, Integer> function) {
return function.apply(value);
}
private static int operateValue(int value, Function<Integer, Integer> srcFunc, Function<Integer, Integer> destFunc) {
return srcFunc.andThen(destFunc).apply(value);
}
public static void main(String[] args) {
int value = ;
int innerResult = operateValue(value, new Function<Integer, Integer>() {
@Override
public Integer apply(Integer t) {
return + t;
}
});
System.out.println(innerResult); //
int lambdaResult = operateValue(value, t -> t + );
System.out.println(lambdaResult); //
int andThenResult = operateValue(value, val -> val + , val -> val + );
System.out.println(andThenResult); //
}
}
二、Consumer:接受参数,没有返回
package com.linux.huhx.function;
import java.util.function.Consumer;
public class ConsumerDemo {
private static void printValue(String value, Consumer<String> consumer) {
consumer.accept(value);
}
public static void main(String[] args) {
printValue("huhx", s -> System.out.println(s.toUpperCase())); // HUHX
}
}
三、Predicate:接受参数,返回boolean
package com.linux.huhx.function;
import java.util.function.Predicate;
public class PredicateDemo {
private static boolean predicateValue(int value, Predicate<Integer> predicate) {
return predicate.test(value);
}
public static void main(String[] args) {
System.out.println(predicateValue(, x -> x >= )); // false
}
}
四、Supplier:不接受参数,有返回值
package com.linux.huhx.function; import java.util.function.Supplier;
import org.springframework.util.StringUtils; public class SupplierDemo { private static String getOrDefault(String value, Supplier<String> supplier) {
return StringUtils.isEmpty(value) ? supplier.get() : value;
} public static void main(String[] args) {
String name = "";
System.out.println(getOrDefault(name, () -> "huhx")); // huhx
}
}
友情链接
java基础---->java8中的函数式接口的更多相关文章
- java8中使用函数式接口
使用函数式接口 Predicate @FunctionalInterface interface Predicate<T>{ boolean test(T t); } public sta ...
- 用好JAVA中的函数式接口,轻松从通用代码框架中剥离掉业务定制逻辑
大家好,又见面了. 今天我们一起聊一聊JAVA中的函数式接口.那我们首先要知道啥是函数式接口.它和JAVA中普通的接口有啥区别?其实函数式接口也是一个Interface类,是一种比较特殊的接口类,这个 ...
- Java8 新特性 函数式接口
什么是函数式接口 函数式接口是Java8引用的一个新特性,是一种特殊的接口:SAM类型的接口(Single Abstract Method).但是它还是一个接口,只是有些特殊罢了. 函数式接口的 ...
- Java8 新特性----函数式接口,以及和Lambda表达式的关系
这里来讲解一下Java8 新特性中的函数式接口, 以及和Lambda 表达式的关系.看到过很多不少介绍Java8特性的文章,都会介绍到函数式接口和lambda表达式,但是都是分别介绍,没有将两者的关系 ...
- 8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理
我是风筝,公众号「古时的风筝」.一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...
- Java基础-Java8新特性
一.Lambda表达式 在了解 Lambda 之前,首先回顾以下Java的方法. Java的方法分为实例方法,例如:Integer的equals()方法: public final class Int ...
- Java 8新特性-1 函数式接口
Java 8 引入的一个核心概念是函数式接口(Functional Interfaces). 通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行. 如果一个接口定义个唯一一个抽象方法,那么这 ...
- Java基础(中)
面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
随机推荐
- webpack常用loader和plugin及打包速度优化
优化 或 也可以用: 备用: 慎用的配置,用的不好会增加打包时间: 代码丑化插件:
- django项目的新建相关的命令及配置
创建工程 django-admin startproject 工程名称 运行开发服务器 python manage.py runserver 创建子应用 python manage.py st ...
- Linux 压缩解压缩
先直接给出各种解压缩命令 .tar 压缩:tar cvf FileName.tar FileName 解压:tar xvf FileName.tar ------------------------- ...
- 【二分】Base Station Sites @ICPC2017HongKong/upcexam5559
时间限制: 1 Sec 内存限制: 128 MB 5G is the proposed next telecommunications standards beyond the current 4G ...
- Wordpress显示文章摘要
放在文章的循环里: <?php if (!empty($post->post_excerpt) ) { //如果文章有摘要则输出摘要 the_excerpt(); } ?>
- python测试开发django-51.Ajax发送post请求登录案例
前言 我想实现一个登录功能:登录的接口是另外一个地方提供,页面上点登录按钮的时候,先访问登录接口,根据接口返回json信息判断是否登录成功,登录成功页面跳转,登录不成功,在登录首页显示失败原因 登录页 ...
- iOS10 11跳转系统设置等的URL收集
Settings App-Prefs:root Settings -> About App-Prefs:root=General&path=About Settings -> Ac ...
- pip安装pycrypto报错:Microsoft Visual C++ 14.0 is required. 和 SSLError: HTTPSConnectionPool的解决办法
今天本打算把[Python3爬虫]网易云音乐爬虫 的代码敲一遍, 但是在安装pycrypto老是报错, 由于我计算是win10, 并且也有vs2017 python3环境下安装pycrypto的一些问 ...
- Hierarchical softmax(分层softmax)简单描述.
最近在做分布式模型实现时,使用到了这个函数. 可以说非常体验非常的好. 速度非常快,效果和softmax差不多. 我们知道softmax在求解的时候,它的时间复杂度和我们的词表总量V一样O(V),是性 ...
- SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具
无论是单轴曲线 .双轴曲线 .柱形图 .饼图 .雷达图 .仪表图.图表引擎全能为您轻松实现.您只需要 3 步操作(数据源准备,设计图表,挂接到您想要展示的位置)便可完成 BI 的设计. 无论是普通报表 ...