常用的函数式接口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. 【总结】2022GDOI普及组 没得游记

    因为是线上,所以没得游记 Day -3 学校安排去7班上课,好耶! 上午全是主科,有一节生物 被你七班捧上天了 被你七班造谣说我暴踩Everyone,还传到九班,给我玩阴的是吧 下午模拟赛,初一第一 ...

  2. 这 BUG,绝了

    上周只上了三天班,但我也丝毫不敢懈怠,BUG 更是一个也没少写. 看着满屏幕的 ERROR,我陷入沉思.为什么我写的代如此烂,无法像大牛们写的那般优雅? 越想越自卑,越想越抑郁.我觉得这样不行,一定得 ...

  3. HCNP Routing&Switching之MSTP

    前文我们了解了RSTP保护相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16255918.html:今天我们来了解下MSTP相关话题: MSTP技术背 ...

  4. 宽字符输出中文,Devc++解决方法

    有群友问类似问题,然后我编译了一下试试: #include <stdio.h> #include <wchar.h> #include <locale.h> int ...

  5. 139_Power BI之某制造企业HR相关数据年度复盘

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近在忙一个关于制造企业HR年度数据复盘分析:数据已脱敏. 先来看看效果. 1.视频效果 [video widt ...

  6. 使用Nginx中遇到的一个小问题思考

    我们知道在现在的网站开发中,随着请求量的快速增长,我们经常会用到负载均衡 以便使用多个网站共同支撑网络的请求,为了能让请求按照一定的规律分配给各个支撑服务器,我们会使用一些负载均衡来对请求进行分发 最 ...

  7. Mysql命令行插入字段超长不报错,而jdbc报错问题分析

    异常信息 exception.ServiceException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long ...

  8. 优先队列STL

    引入 优先队列是一种特殊的队列,它的功能是--自动排序. 基本操作: q.size(); //返回q里元素个数 q.empty(); //返回q是否为空,空则返回1,否则返回0 q.push(k); ...

  9. c++ 超长整数减法 高精度减法

    c++ 超长整数减法 高精度减法 实现思路 和加法类似,设置临时变量记录借位 当对应位数相减得到的结果大于等于0时,该位数字为本身值,否则需要加上借位的10.则\(t=(t+10)%10\) 打卡代码 ...

  10. 论文阅读 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning

    6 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning207 link:https ...