常用的内置函数式接口

JDK提供了大量常用的函数式接口以丰富Lambda的典型使用场景它们主要在java.util.function包中被提供。

我们介绍几种最常用的

一.内置函数Consumer

源码是这样的[无返回值]

public interface Consumer<T> {

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

测试代码

/**
 * TODO 类描述
 *
 * @author honghe
 */
public class Demo {

    public static void main(String[] args) {
        User user1 = new User("admin",11,"男");
        Consumer<User> user2 = user -> user.setAge(0);
        user2.accept(user1);
        System.out.println("admin的age = [" + user1.getAge() + "]");
        //结果为 admin的age = [0]
    }

}
二.内置函数Supplier

源码是这样的[有个范型返回值]

@FunctionalInterface
public interface Supplier<T> {

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

测试代码

/**
 * TODO 类描述
 *
 * @author honghe
 */
public class Demo {


    //循环10次生成userList  年龄为每次循环的点值
    public static void main(String[] args) {
        List<User> userList  = getUserList(5,()->new User("admin",100,"男") );
        for (User u: userList) {
            System.out.println("姓名 = [" + u.getName() + "]年龄 = ["+u.getAge()+"]");
        }
    }

    public static List<User> getUserList(Integer sum,Supplier<User> userSupplier){
        List<User> userList=new ArrayList<>();
        for (int i = 0; i <sum ; i++) {
            User user = userSupplier.get();
            user.setAge(i);
            userList.add(user);
        }
        return userList;
    }
}
二.内置函数Function

/**
 * TODO 类描述
 *
 * @author honghe
 */
public class Demo {

    public static void main(String[] args) {
        String hello = strChange("Hello", (str)->str.toLowerCase());
        System.out.println(hello);
        String subStr = strChange("这是Function的测试代码", (str)->str.substring(5,14));
        System.out.println(subStr);
    }
    private static String strChange(String str,Function<String,String> fun){
        return fun.apply(str);
    }
}
二.内置函数Predicate

描述:Predicate< T>接口接受一个T类型参数,返回一个boolean值。
源代码

public interface Predicate<T> {
    boolean test(T t);
}

测试代码

/**
 * TODO 类描述
 *
 * @author honghe
 */
public class Demo {
    //判断是否大于特定的需求 >5
    public static void main(String[] args) {
        Predicate<Integer> boolValue = x -> x>5;
        Integer num1 = 1;
        Boolean flag1 = boolValue.test(num1);
        Integer num2 = 6;
        Boolean flag2 = boolValue.test(num2);
        System.out.println("flag1 = [" + flag1 + "]");// false
        System.out.println("flag2 = [" + flag2 + "]");// true
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值