java提供的函数式接口

下面是我归纳的一些核心函数式接口,

    1. Consumer     消费型接口 
                 void  accept(T t) ,提供的是无返回值的抽象方法
    2. Supplier   供给型接口
                T  get()  ,  提供的是有返无参的抽象方法

   3. Function 函数型接口    T  是参数类型,R是返回值类型
             R apply(T t)   提供的是 有参 有返的抽象方法.

   4.Predicate  断言型接口 
        boolean test(T t)  提供的有参有返回的方法,返回的是boolean类型的返回值,,

上面就是lambda经常使用的函数接口了,下面我们来做一些演示

1. Consumer 消费型接口

 /**
     *   消费演示
     */
    @Test
    public void Test_01(){
        happy(1000.0,(m) -> System.out.println("爱怎么消费怎么消费Money="+(m-100)));
    }

    public void happy(Double money, Consumer consumer){
        consumer.accept(money);
    }

运行结果如下
java提供的函数式接口_第1张图片


2. Supplier 供给型接口

 /**
     * 需求 : 创建指定个数的整数,返回list的集合
     */
    @Test
    public  void Test_02(){
        List list = happy_02(10, () -> (int)(Math.random() * 100));

        System.out.println("list="+list);
    }

    public List happy_02(int count, Supplier sup){
        ArrayList lists = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            int e = sup.get();
            lists.add(e);
        }

        return lists;
    }

运行结果
java提供的函数式接口_第2张图片


3. Function 函数式接口

   /**
     * 需求,写一个专门处理字符串的方法
     */

    @Test
    public void Test_03(){

        String str = happy_04("美味的皮皮虾", (s) -> s.substring(1));

        System.out.println("str="+str);
    }

    public String happy_04(String str , Function fun){

        return fun.apply(str);
    }

运行结果如下

java提供的函数式接口_第3张图片

4.Predicate 断言型接口

 /*
       需求 :将满足条件的字符串放入集合中,
     */
    @Test
    public void Test04(){

        List<String> list = Arrays.asList("zsss", "lsss", "ww", "zl", "tq", "jjj");

        ArrayList<String> s1 = happy_05(list,(m) -> m.length() > 2);

        System.out.println("list="+s1);

    }

    public ArrayList<String> happy_05(List<String> list,Predicate<String> predicate){
        ArrayList<String> list2 = new ArrayList<String>();

        for (String s : list) {
            if(predicate.test(s)){
                list2.add(s);
            }
        }

        return list2;
    }

运行结果 如下
java提供的函数式接口_第4张图片

以上就是一些常见的函数式接口,就说那么多啦

你可能感兴趣的:(Java新特性)