码迷,mamicode.com
首页 > 编程语言 > 详细

Java 8 内置四大核心函数式接口

时间:2021-06-20 17:43:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:接口测试   oid   指定   实践   字符串   public   dex   check   test   

1、四大核心函数式接口

接口类型 表现形式 实现方法 说明
消费性接口 Consumer<T> void accept<T t> 参数为 t,无返回值
供给型接口 Supplier<T> T get() 无参数,返回值类型为 T
函数型接口 Function<T,R> R apply(T t) 参数为 t,返回值类型为 R
断言型接口 Predicate<T> Boolean test(T t) 参数为 t,返回值类型为 Boolean

 

  

  

  

  

 

 

2、四大核心函数接口实践

public class LambdaDemo {
    // 1、消费性接口测试
    @Test
    public void testLambda01() {
        someThingHappy("summer", (x) -> {
            String str = x;
            System.out.println("某个人喜欢大保健,他觉得只有大保健能让他快乐,这个人就是 " + x);
        });
    }

    // 2、供给型接口测试
    @Test
    public void testLambda02() {
        List<String> strEqualTo5 = getStrEqualTo5(() -> {
            String[] strArr = {"summer", "erico", "puff", "defire", "hank"};
            List<String> list = Arrays.asList(strArr);
            ArrayList<String> strList = new ArrayList<>();

            for (String str : list) {
                if (str.length() == 4) {
                    strList.add(str);
                }
            }
            return strList;
        });
        System.out.println(strEqualTo5);
    }

    // 3、函数型接口测试
    @Test
    public void testLambda03() {
        Integer index = getIndexFromArray((x) -> {
            int i = 0;
            for (int j = 0; j < x.length; j++) {
                if (Objects.equals(x[j], "summer")) {
                    i = j;
                }
            }
            return i;
        });
        System.out.println(index);
    }

    // 4、断言型接口测试
    @Test
    public void testLambda04() {
        Boolean isEricoExists = checkUser((x) -> {
            Boolean flag = false;
            for (String str : x) {
                if (Objects.equals(str, "erico")) {
                    flag = true;
                }
            }
            return flag;
        });
        System.out.println(isEricoExists);
    }

    // 需求 1、输出一段快乐的话
    // Consumer<T> : 消费性接口
    // void accept(T t)
    public void someThingHappy(String userName, Consumer<String> consumer) {
        consumer.accept(userName);
    }

    // 需求 2、返回一个集合,集合中存放长度等于 5 的字符串
    // Supplier<T> : 供给型接口
    // T get();
    public List<String> getStrEqualTo5(Supplier<List<String>> supplier) {
        return supplier.get();
    }

    // 需求 3、筛选出名称为 summer 的用户,并返回其在数组中的索引位置
    // Function<T,R>
    // R apply(T t)
    public Integer getIndexFromArray(Function<String[], Integer> function) {
        String[] strArr = {"erico", "puff", "defire", "hank", "summer"};
        return function.apply(strArr);
    }

    // 需求 4、判断指定的集合中是否存在一个叫 erico 的人
    // Predicate<T>
    // Boolean test<T>
    public Boolean checkUser(Predicate<List<String>> predicate) {
        String[] strArr = {"erico", "puff", "defire", "hank", "summer"};
        List<String> listStr = Arrays.asList(strArr);
        return predicate.test(listStr);
    }
}

Java 8 内置四大核心函数式接口

标签:接口测试   oid   指定   实践   字符串   public   dex   check   test   

原文地址:https://www.cnblogs.com/xiaomaomao/p/14904806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!