java之Function、Consumer和Predicate用法及区别

首先参数是函数式接口类型的入参时,这个入参类型可以是lamda表达式代替。

1.Function:传入一个类型值返回一个类型值

源码:

@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);

.......


}

示例一:

        Function<String,String> function=new Function() {
            @Override
            public Object apply(Object o) {
                return o;
            }
        };
        String str1=function.apply("aaa");

        System.out.println(str1);

示例二:

    public static String validateValue(String name,Function<String,String> function){
        return function.apply(name);
    }


    public static void main(String[] args){

        String name="";
        System.out.println(validateValue(name,inputStr -> inputStr.isEmpty()?"不能为空":inputStr));

}

inputStr相当于 apply方法的入参,inputStr.isEmpty()?"不能为空":inputStr相当于apply方法的实现(Lamda表达式)。以下同理。

2.Consumer: 传入一个类型值,没有返回值

源码:
 

@FunctionalInterface
public interface Consumer<T> {

    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
...

}

示例:

    public static void main(String[] args){

        String name="aaa";
        Consumer<String> consumer=new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println(o+"===");
            }
        };
        consumer.accept(name);

}

3.Predicate:一般用于做判断,返回boolean类型

源码:

@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);

...

}

示例一:

        String name="bbb";

        Predicate<String> predicate=new Predicate() {
            @Override
            public boolean test(Object o) {
                return o.equals("aaa");
            }
        };
        System.out.println(predicate.test(name));

示例二:

    public static boolean validateValue(String name,Predicate<String> predicate){
        return predicate.test(name);
    }


    public static void main(String[] args){

        String name="aaa";
        System.out.println(validateValue(name,inputStr -> inputStr.equals("aaa")? true:false));

}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值