常用的函数式接口Function接口

package com.yang.Test.FunctionStudy;

import java.util.function.Function;

/**
* java.util.function.Function<T,R>接口用来根据一个类型的数据得到另一个类型的数据,
* 前者称为前置条件,后者称为后者条件
* Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型R的结果。
* 使用场景例如:将String类型转换为Integer类型
*/
public class FunctionStudy01 {
/**
* 定义一个方法
* 方法的参数传递一个字符串类型的整数
* 方法的参数传递一个Function接口,泛型使用<String,Integer>
* 使用Function接口中的方法apply,把字符串类型的整数,转换为Integer类型的整数
*/
private static void change(Function<String, Integer> function, String s) {
Integer apply = function.apply(s);
System.out.println(apply);
} public static void main(String[] args) {
//定义一个字符串类型的整数
String s = "1234";
//调用change方法,传递字符串类型的整数s和Lambda表达式
change((String s1) -> {
//把字符串类型的整数转换为Integer类型的整数
int i = Integer.parseInt(s1);
return i;
},s); //优化Lambda表达式
change(s1 -> Integer.parseInt(s1),"1234");
}
}

常用的函数式接口Function接口默认方法andThen

package com.yang.Test.FunctionStudy;

import java.util.function.Function;

/**
* Function接口中的默认方法andThen:用来进行组合操作
*
* 需求:
* 把String类型的"123",转换为Integer类型,把转换后的结果加上10
* 把增加后的Integer类型的数据,转换为String类型
*
* 分析:
* 转换了两次
* 第一次是把String类型转换为了Integer类型
* 所以我们可以使用Function<String,Integer> fun1
* Integer i = fun1.apply("132")+10;
* 第二次是吧Integer类型转换为String类型
* 所以我们可以使用Function<Integer,String> fun2
* String s = fun2.apply(i);
* 我们可以使用andThen方法,把两次转换组合在一起使用
* String s = fun1.andThen(fun2).apply("123");
* fun1先调用apply方法,把字符串转换为Integer
* fun2再调用apply方法,把Integer转换为字符串
*/
public class FunctionAndThenStudy01 { /**
* 定义一个方法
* 参数传递一个字符串类型的整数
* 参数再传递两个Function接口
* 一个泛型使用<String,Integer>
* 一个泛型使用<Integer,String>
*/ protected static void change(String s, Function<String, Integer> fun1, Function<Integer, String> fun2) {
// int i = fun1.apply(s) + 10;
// String apply = fun2.apply(i);
// System.out.println(apply);
String s1 = fun1.andThen(fun2).apply(s);
System.out.println(s1);
} public static void main(String[] args) {
//定义一个字符串的整数
String s = "132";
//调用change方法参数传递一个字符串类型的整数和两个Lambda表达式
change(s,s1 -> {
return Integer.parseInt(s1)+10;
},integer -> {
//把整数类型的整数转换为字符串
String s1 = String.valueOf(integer);
return s1;
}); change(s,s1 -> Integer.parseInt(s1),integer -> String.valueOf(integer));
}
}

常用的函数式接口Function接口和常用的函数式接口Function接口默认方法andThen的更多相关文章

  1. 常用的函数式接口_Consumer接口和常用的函数式接口_Consumer接口的默认方法andThen

    Consumer接口 java,util.function.Consumer接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定 抽象方法:accept C ...

  2. Java 8 访问接口的默认方法

    Java 8 API提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的. 一.Opti ...

  3. Java 8——接口中个的默认方法和静态方法

    在Java SE 8之前,interface只是事物的抽象,用来定义统一的抽象事物和描述事物的抽象行为和属性. 但是在Java SE 8中,增加了可以在interface中增加默认实现的行为和事物的静 ...

  4. 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选

    常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...

  5. 常用的函数式接口_Predicate接口和常用的函数式借楼_Predicate_默认方法and

    package com.yang.Test.PredicateStudy; import java.util.function.Predicate; /** * java.util.function. ...

  6. 常用的函数式接口_Predicate接口_默认方法and和Predicate接口练习_集合接口筛选

    默认方法:and 既然是条件判断,就会存在与.或.非三种常见的逻辑关系.其中将两个Preadicate条件使用"与"逻辑连接起来实现"并且"的效果时,可以使用d ...

  7. 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)

    16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...

  8. Atitit.远程接口 监控与木马   常用的api 标准化v2 q216

    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216 1. 木马与远程接口 监控的常用的api2 1.1. 文件复制2 1.2. 屏幕定时截图2 1.3. 邮件发送2 1.4.  ...

  9. Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等

    一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...

随机推荐

  1. kvm 虚拟化技术 1.2 之配置网络桥接

    实验一:配置网路桥接模式 默认kvm的网络是NAT模式,一般生产环境用桥接模式,把虚拟机改成桥接模式 1.查看是否安装网桥设备 [root@kibana opt]# rpm -qa|grep brid ...

  2. python PDF转图片,World转PDF

    软件不用续费了... PDF转World暂时没需求,有需求了再搞 Python3.9 ---------------pip3 install  PyMuPdf ---------------pip3 ...

  3. CSAPP 之 CacheLab 详解

    前言 本篇博客将会介绍 CSAPP 之 CacheLab 的解题过程,分为 Part A 和 Part B 两个部分,其中 Part A 要求使用代码模拟一个高速缓存存储器,Part B 要求优化矩阵 ...

  4. netty系列之:netty对marshalling的支持

    目录 简介 netty中的marshalling provider Marshalling编码器 Marshalling编码的另外一种实现 总结 简介 在之前的文章中我们讲过了,jboss marsh ...

  5. 147_Power BI Report Server demo演示

    焦棚子的文章目录 服务器地址:http://pbirs.jiaopengzi.com/reports 用户名:pbirs 密码:pbirs 分别用pc网页.pc桌面power bi软件以及手机端pow ...

  6. TypeScript 学习的随笔

    TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准 安装TypeScript npm install -g typescript 编译 tsc app.t ...

  7. 实验二——以点类 Point 为基类设计圆类 Circle

    学习内容:以点类 Point 为基类设计圆类 Circle 示例代码: package 实验二; import java.util.Scanner; class Point{//父类Point pri ...

  8. 【工程应用七】接着折腾模板匹配算法 (Optimization选项 + no_pregeneration模拟 + 3D亚像素插值)

    在折腾中成长,在折腾中永生. 接着玩模板匹配,最近主要研究了3个课题. 1.创建模型的Optimization选项模拟(2022.5.16日) 这两天又遇到一个做模板匹配隐藏的高手,切磋起来后面就还是 ...

  9. 使用pip安装库或执行pip命令时报错解决方案

    初次安装pip后执行安装升级一般不会有问题,但是国外的镜像源下载升级由于网速过慢会进行报错,提示需要升级 pip 或者下载速度很慢最后直接报了错如下图: 这个时候只需要修改镜像源即可,建议修改为永久镜 ...

  10. 喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。

    你好呀,我是歪歪. 前段时间在 RocketMQ 的 ISSUE 里面冲浪的时候,看到一个 pr,虽说是在 RocketMQ 的地盘上发现的,但是这个玩意吧,其实和 RocketMQ 没有任何关系. ...