JDK8新特性--常用函数接口--常用的函数式接口_Function接口二(and then)

代码紫霄使
• 阅读 495

JDK8新特性--常用函数接口--常用的函数式接口_Function接口二(and then)

package com.itheima.demo07.Function;

import java.util.function.Function;

/*

Function接口中的默认方法andThen:用来进行组合操作

需求:
    把String类型的"123",转换为Inteter类型,把转换后的结果加10
    把增加之后的Integer类型的数据,转换为String类型

分析:
    转换了两次
    第一次是把String类型转换为了Integer类型
        所以我们可以使用Function<String,Integer> fun1
            Integer i = fun1.apply("123")+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 Demo02Function_andThen {

/*
    定义一个方法
    参数串一个字符串类型的整数
    参数再传递两个Function接口
        一个泛型使用Function<String,Integer>
        一个泛型使用Function<Integer,String>
 */
public static void change(String s, Function<String,Integer> fun1,Function<Integer,String> fun2){
    String ss = fun1.andThen(fun2).apply(s);
    System.out.println(ss);
}

public static void main(String[] args) {
    //定义一个字符串类型的整数
    String s = "123";
    //调用change方法,传递字符串和两个Lambda表达式
    change(s,(String str)->{
        //把字符串转换为整数+10
        return Integer.parseInt(str)+10;
    },(Integer i)->{
        //把整数转换为字符串
        return i+"";
    });

    //优化Lambda表达式
    change(s,str->Integer.parseInt(str)+10,i->i+"");
}

}

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java Lambda表达式
简介  Lambda可以理解为简洁的表示可传递的匿名函数,包括:参数列表、函数主体、返回类型、抛出的异常列表(可以不存在)。  函数式接口:定义一个抽象方法的接口(接口可以拥有默认方法:default)。  函数式接口有什么用?    Lambda可以以内联的形式为函数式接口的抽象方法提供实现。虽然内部类也可以实现,但lambda表达
Stella981 Stella981
3年前
Lambda表达式中Collections的接口有哪些变化?
我们先从最熟悉的\Java集合框架(JavaCollectionsFramework,JCF)\开始说起。为引入Lambda表达式,Java8新增了java.util.function包,里面包含常用的函数接口,这是Lambda表达式的基础,Java集合框架也新增部分接口,以便与Lambda表达式对接。首先回顾一下Java集合框架的接口继承
Wesley13 Wesley13
3年前
JAVA之forEach遍历集合
JAVA之forEach遍历集合在JDK8中,根据Lambda表达式的特性还增加了一个forEach(Consumeraction)方法来遍历集合,该方法所需要的参数是一个函数式接口importjava.util.ArrayList;importjava.util.List;
Wesley13 Wesley13
3年前
Java8函数式编程(A)
将行为作为数据传递函数编程的最直接的表现,莫过于将函数作为数据自由传递,结合泛型推导能力,使代码表达能力获得飞一般的提升。Java8怎么支持函数式编程?主要有三个核心概念:函数接口(Function)流(Stream)聚合器(Collector)函数接口关于函数接口,两件事:函数接口是行为
Wesley13 Wesley13
3年前
Java8之Stream
在使用Stream之前先介绍几个概念:1、函数式接口2、常用的函数式接口3、Lambda4、方法引用 1、函数式接口  1.只定义了一个抽象方法的接口。  2.JDK8接口中的静态方法和默认方法,都不算是抽象方法。  3.接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,
Wesley13 Wesley13
3年前
Java8—一万字的Lambda表达式的详细介绍与应用案例
  基于Java8详细介绍了lambda表达式的语法与使用,以及方法引用、函数式接口、lambda复合等Java8的新特性!文章目录1Lambda的概述2函数式接口2.1Consumer消费型接口2.2Supplier供给型接口2.3Function<T,R函数型接口
Wesley13 Wesley13
3年前
Java8
JDK8自带的函数式接口Function有两个默认方法andThen和compose,它们都返回Function的一个实例,可以用这两个方法把Function接口所代表的的Lambda表达式复合起来。先看个简单的例子:Function<Integer,Integerfxx1;Function<Integer
Wesley13 Wesley13
3年前
Java Comparator接口学习笔记
Comparator是一个泛型函数式接口,T表示待比较对象的类型:@FunctionalInterfacepublicinterfaceComparator<T{}本文将主要介绍Comparator作为_函数式接口_的用法。理解下面的内容需要以下知识:函数式接口、Lambd
Wesley13 Wesley13
3年前
Java8 新特性 函数式接口
什么是函数式接口  函数式接口是Java8引用的一个新特性,是一种特殊的接口:SAM类型的接口(SingleAbstractMethod)。但是它还是一个接口,只是有些特殊罢了。  函数式接口的出现主要是为了配合Java8的另一个新特性Lamdba表达式来使用。接口中只有一个抽象方法接口
Wesley13 Wesley13
3年前
JDK8如何写出优雅代码
只要掌握以下3点:四大函数式接口、函数式接口常用操作、Stream流式常规操作/@descJava四大内置函数式接口Consumer<T:消费型接口voidaccept(Tt);Suppler<T:供给型接口Tget()
Stella981 Stella981
3年前
Guava(函数式编程)
函数式编程:使用Function接口(jdk8中已经存在):/  其功能就是将输入类型转换为输出类型 /public interface Function<F, T {  T apply(@Nullable F input);