Java中的四大函数式接口(重要、需要掌握)

摘要:本文讲述了Java中的四大函数式接口,包括消费型、函数型、断言型和供给型这四种类型,根据常用的操作来理解四大函数式接口。

1.  消费型

消费型是来自java.util.function.Consumer类中的函数式接口,通过调用其.accept()方法来打印结果集(实现数据集的遍历)。
// Consumer<T>  消费型 打印结果集(遍历)

// Consumer<T> 消费型 .accept()

        Consumer<ArrayList<Integer>> c = (li) -> {

            for(int i = 0; i < li.size(); i++) {

                System.out.println(li.get(i));

            }

        };

        ArrayList<Integer> li = new ArrayList<>();

        li.add(22);

        li.add(33);

        li.add(32);

        li.add(45);

        li.add(34);

        c.accept(li); // 遍历集合

2.  函数型

函数型是来自java.util.function.Function类中的函数式接口,通过调用其.apply()方法来转换(或改变)对象,例如:实现对截取字符串、对象类型的转换等。
// Function<T, R> 函数型  转换对象 改变对象

// Function<T, R> 函数型 .apply()

        // 截取字符串的一部分;

        String str = "HelloWorld";

        Function<String, String> f = (s) -> {

            return s.substring(0,5);

        };

        String string = f.apply(str);

        System.out.println(string);



        // Function<T, R> 函数接口 T:形参 R:返回值

        // 将ArrayList类型 转换成 HashSet

        Function<ArrayList<Integer>, HashSet<Integer>> f1 = (list) -> {

            HashSet<Integer> h = new HashSet<>();

            h.addAll(list);

            return h;

        };

        HashSet<Integer> h1 = f1.apply(li);

        System.out.println(h1);



        // 将ArrayList类型 转换成 HashSet : 简单的方式,一步到位

        Set<Integer> collect = li.stream().collect(Collectors.toSet());

        System.out.println(collect);

3.  断言型

断言型是来自java.util.function.Predicate类中的函数式接口,通过调用其.text()方法来实现对数据的过滤,就是将部分数据处理(或过滤)掉,而只得到满足某个条件的数据。
// Predicate<T> 断言型 过滤数据

// Predicate<T> 断言型  .test()

        Predicate<Integer> p = (t) -> {

            return t%2 == 0;

        };

        // 判断一个数是偶数 还是奇数

        boolean test = p.test(12);

        System.out.println(test);



        System.out.println("-------------");

//        li.stream().filter((e) -> {

//            return e < 35; // 只得到满足该条件的数据

//        }).forEach(System.out::println);



        List<Integer> collect1 = li.stream().filter((e) -> {

            return e < 35;

        }).sorted().collect(Collectors.toList());

        // sorted() : 排序

        System.out.println(collect1);

4.  供给型

供给型是来自java.util.function.Supplier类中的函数式接口,通过调用其.get()方法来实现对数据的获取。

// Supplier<T> 供给型 得到数据

// Supplier<T> 供给型

        Supplier<ArrayList<Integer>>  s = () -> {

            return li;

        };

        ArrayList<Integer> arrayList = s.get();

        System.out.println(arrayList);
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值