java8 四大内置核心函数式接口

前言

在java8中使用lambda表达式可以极大的简化我们的开发代码,使用Lambda表达式需要使用函数式接口,java8为我们定义好了4类内置函数式接口,这4类接口基本能够满足平时的开发需要,如果有比较特殊得情况我们可以自己去定义函数式接口。

1、consumer<T> 消费型接口,有入参,返回值为空

@FunctionalInterface
public interface Consumer<T> {
 
    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
}

例子:

package com.example.demo.java8;

import java.util.function.Consumer;

public class Java8InnerFunction {

    public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        function.consumMoney(1000,x-> System.out.println("消费了:"+x+"元"));
    }

    public void consumMoney(int money, Consumer consumer){
        consumer.accept(money);
    }
}

2、Supplier<T> 提供型接口 空参但是有返回值

@FunctionalInterface
public interface Supplier<T> {

   /**
    * Gets a result.
    *
    * @return a result
    */
   T get();
}

例子:

 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
        int i = function.supplyRandomNum(() -> 
             (int) (Math.random() * 100);
        );
        System.out.println("获得的随机数是:"+i);
    }

    public int supplyRandomNum(Supplier<Integer> supplier){
        return supplier.get();
    }

3、Function<T, R> 函数型接口 有入参 有返回值

@FunctionalInterface
public interface Function<T, R> {
 
    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);
}

 例子:计算一个数的10倍,并输出结果

package com.example.demo.java8;

import java.util.Random;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

public class Java8InnerFunction {

    public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
     
        int i1 = function.functionCompute(5, x -> x * 10);
        System.out.println("计算后的结果值是:"+i1);
    }

    public int functionCompute(int a,Function<Integer,Integer> function){
        return function.apply(a);
    }
}

4、Predicat<T> 断言型接口 返回真假

@FunctionalInterface
public interface Predicate<T> {
 
    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);
}

 例子:计算一个数是否比100大,并输出真假

 public static void main(String[] args) {
        Java8InnerFunction function=new Java8InnerFunction();
       
        boolean b = function.predicateCompare(101, x -> x > 100);
        System.out.println("101比100大吗:"+b);
    }

   
    public boolean predicateCompare(int x,Predicate<Integer> predicate){
      return  predicate.filter(x);

    }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值