函数式接口的相关类浅析

Supplier接口

  • Supplier接口中只有一个抽象方法T get(),其中T指的是泛型,用来获取一个泛型参数所指定类型的数据

  • Supplier<T>接口被称为生产型接口,指定泛型是什么类型,就获得什么类型的数据

  • 代码

    ==函数定义==
    public int getMax(Supplier<int> sup){
    	return sup.get();
    	}
    

    显然Suppiler是函数式接口可以使用Lambda表达式

    ==用Lambda表达式进行调用==
    int arr[] = {1,2,3,4,5};
    //获取数组最大值
    getMax(()->{
    	int max = arr[0];
    	for(int i:arr)
    		if(i>arr[0]) max = i;
    	return max;
    }
    
    

Consumer接口

  • Consumer接口只有一个抽象方法accept(T),T指泛型数据,将所接收的数据自定义格式化打出
  • Consumer<T>被称为消费型接口,指定泛型是什么类型,就格式化什么类型的数据
  • 代码
    ==方法定义==
    public void printReverse(String name,Consumer<String> con){
    	con.accept(name);
    }
    ==Lambda调用==
    printReverse("ABC",(String name)->{
    	String rename = new BufferedString(name).reverse();
    	System.out.println(rename);
    });
    
  • Consumer接口的andThen()默认方法
    con1.accept(name);
    con2.accept(name);
    ==等同于==
    con1.andThen(con2).accept(name);
    

Predicate接口

  • Predicate接口只有一个抽象方法test(T),T指泛型数据,自定义判断所接收的数据
  • Predicate<T>被称为判断型接口,指定泛型是什么类型,就判断该类型是否满足一定条件
  • 代码
    ==函数定义==
    public void checkString(String name, Predicate<String> pre){
    	return pre.test(name);
    }
    ==lambda调用==
    String name ="ABCD";
    checkString(name,(String name)->{
    	int len = name.length();
    	if(len>5)return true;
    	else return false;
    });
    
    Predicate接口方法and()
    pre1.test(name)&&pre2.test(name);
    ==等同于==
    pre1.and(pre2).test(name);
    

同样的方法还有or()以及 negate()取反
!pre.test(name) 等同于pre.negate().test(name)

Function接口

  • Function接口只有一个抽象方法apply(T)
  • Function<T1,T2>被称为转换型接口,从T1数据类型得到T2数据类型
  • R apply(T) 由T类型获得R类型
  • 代码
    ==函数定义==
    public void printExChange(String str, Function<String,Integer> fun){
    	Integer in = fun.apply(str);
    	System.out.println(in);
    	}
    ==Lambda调用==
    String str = "123";
    printExChange(str,(str)->{
    	return Integer.parseInt(str);
    	}
    ==简化后==
    printExChange(str,str->Integer.parseInt(str));
    
    • Function接口的默认方法andThen
      • 这里的andThen和Consumer接口的是一样的作用
      • 代码
      •   public void changeTwice(String num,Function<String,Integer> fun1,Function<Integer,String>fun2){
          	fun1.apply(num);
          	fun2.apply(num);
          	==等同于==
          	fun1.andThen(fun2).apply(num);
          }
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子陌.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值