Java四大函数式接口

什么是函数式接口

  1. 只包含一个抽象方法的接口,成为函数式接口;

  2. 可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda表达式爆出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明);

  3. 我们可以在任意函数式接口上使用 @FunctionalInterface 注解,这样可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式

Java四大函数式接口

Java四大函数式接口_第1张图片

 

 

 


消费型接口

 // Consumner 消费型接口
    @Test
    public void test1(){
        happy(1000,(m) -> {
            System.out.println("刚哥喜欢大保健,每次消费"+m+"元");
        });
    }
    public void happy(double money, Consumer consumer){
        consumer.accept(money);
    }

 

 

 


供给型接口

   // Supplier 供给型接口
    @Test
    public void test2() {
        List numList = getNumList(10, () -> {
            return new Random().nextInt(10);
        });
        System.out.println(numList);
    }

    //需求:产生指定个数的整数,并放入集合中
    public List getNumList(int num, Supplier supplier) {
        List list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Integer integer = supplier.get();
            list.add(integer);
        }
        return list;
    } 

 

 

 


函数型接口.

// 函数型接口
    @Test
    public void test3(){
        String handler = strHandler(" 无比巨帅的小飞仔 ", (m) -> {
            return m.trim().substring(1,5);
        });
        System.out.println(handler);

    }
    //需求 用于处理字符串
    public static String strHandler(String str, Function function){
        return function.apply(str);
    } 

  


 

断言型接口

 // 断言型接口
    @Test
    public void test4() {
        List list = Arrays.asList("Hello", "xuefei", "zhenhsuai");
        List strList = filterStr(list, (m) -> m.length() > 5);
        System.out.println(strList);
    }

    // 需求:将满足条件的字符串,放入集合中去
    public List filterStr(List list, Predicate predicate) {
        List strList = new ArrayList<>();
        for (String s : list) {
            if (predicate.test(s))
                strList.add(s);
        }
        return strList;
    }

 


 

其他函数式接口

Java四大函数式接口_第2张图片

 

你可能感兴趣的:(Java四大函数式接口)