常用的函数式接口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. L2M-GAN: Learning to Manipulate Latent Space Semantics for Facial Attribute Editing阅读笔记

    L2M-GAN: Learning to Manipulate Latent Space Semantics for Facial Attribute Editing 2021 CVPR L2M-GA ...

  2. C# 与LINQ有关的语言特性

    1.隐式类型 我们知道强类型语言 C  C++ C#  Java 对变量的定义前必须要确定这个变量是什么类型的   例如  string str="abc";    int num ...

  3. mac安装java环境

    1.java安装包获取: 链接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2.验证安装是否成 ...

  4. 【多线程与高并发原理篇:4_深入理解synchronized】

    1. 前言 越是简单的东西,在深入了解后发现越复杂.想起了曾在初中阶段,语文老师给我们解说<论语>的道理,顺便给我们提了一句,说老子的无为思想比较消极,学生时代不要太关注.现在有了一定的生 ...

  5. java对象与Json字符串之间的转化

    public class Test { public static void main(String[] args) { // 实现java对象与Json字符串之间的转化 // 1. Person对象 ...

  6. Java_循环结构

    目录 while循环 do...while循环 for循环 for循环嵌套 增强for循环 打印三角形 Debug 视频 while循环 while(布尔表达式){ //循环内容 } //死循环 wh ...

  7. React简单教程-5-使用mock

    前言 一个前后端分离的项目,前端人员需要对接后端的接口.如果在后端的接口没有开发好,或者没有测试版可以对接的情况下,前端人员也不能坐等后端接口写好后再开始开发. 一个项目的,理想情况下接口的规范应该是 ...

  8. C++ 获取指定的重载函数地址

    刚刚看到一篇博客,说 std::bind 无法绑定正确的重载函数.这里的问题并不是 std::bind 能力不足,而是将函数名传递给 std::bind 时编译器无法取到这个函数的地址(也就是符号,编 ...

  9. torch.rand、torch.randn、torch.normal、torch.linespace

    torch.rand(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) # ...

  10. redis相关知识点

    redis 的相关知识点 启动 启动代码 redis-cli -a 密码 通用命令 expire: 设置有效期 expire name 10 key key * 相关数据类型 String set:添 ...