美文网首页
三 Java8四大内置核心函数式接口

三 Java8四大内置核心函数式接口

作者: 败给小萝莉 | 来源:发表于2019-04-11 21:04 被阅读0次

    Java8为我们提供了四大核心函数式接口:

    消费型接口

    Comsumer<T>:void accept(T t);
    顾名思义,你提供给我内容(有参数),我负责消费(使用你提供的参数,无返回值)
    示例:

        public void happy(double money, Consumer<Double> con){
            con.accept(money);
        }
        @Test
        public void test() {
            happy(1000, (x) -> System.out.println("消费 : " + x));
        }
    

    供给型接口

    Supplier<T> :T get();
    顾名思义,这个接口专门产生对象返回给调用者,我不消耗任何东西(无参),专门给你提供内容(有返回值)
    示例:产生指定个数的整数并放入集合中

    public List<Integer> getNumList(int num, Supplier<Integer> sup) {
            List<Integer> list = new ArrayList<>();
            for (int i = 0; i < num; i++) {
                list.add(sup.get());
            }
            return list;
        }
        @Test
        public void test2() {
            List<Integer> numList = getNumList(10, () -> (int) (Math.random() * 100));
            for (Integer num : numList) {
                System.out.println(num);
            }
        }
    

    函数型接口

    Function<T, R> :R apply(T t);
    这个接口接收一个参数,并且返回内容,你提供给我一些东西(有参数),我返还给你一些东西(有返回值)。
    示例:将一个字符串转成大写

        public String strHandler(String str, Function<String, String> fun) {
            return fun.apply(str);
        }
        @Test
        public void test3() {
            String st = strHandler("Helllo", (str) -> str.toUpperCase());
            System.out.println(st);
        }
    

    断言型接口

    Predicate<T> :boolean test(T t);
    顾名思义,做判断,你给我参数,我处理完后给你一个判断的结果:true or false,有参数有返回值并且返回值为boolean类型的值
    示例:将字符串长度大于3的字符串放入集合中

        public List<String> filterStr(List<String> list, Predicate<String> pre) {
            List<String> strList = new ArrayList<>();
            for (String str : list) {
                if (pre.test(str)) {
                    strList.add(str);
                }
            }
            return strList;
        }
        @Test
        public void test4() {
            List<String> strList = Arrays.asList("Hello", "mobei", "Lambda", "www", "ok");
            List<String> res = filterStr(strList, (str) -> str.length() > 3);
            for (String str : res) {
                System.out.println(str);
            }
        }
    

    这四大内置核心函数式接口算是开发中常用的,除开这四个,其实Java8还帮我们提供了其它的函数式接口,理解了这四大核心函数式接口,其它的理解起来也就相当容易了。我们可以去java.util.function包下面查看具体的接口:


    函数式接口.png

    根据具体的业务需求进行选择,如果都没有那我们就只能选择自己编写函数式接口了

    相关文章

      网友评论

          本文标题:三 Java8四大内置核心函数式接口

          本文链接:https://www.haomeiwen.com/subject/tkgxwqtx.html