JAVA8 内置的四大函数式接口

/**
 * JAVA8 内置的四大函数式接口
 *
 * Consumer :消费型接口
 *      void accept(T t);
 *
 * Supplier : 供给型接口
 *      T get();
 *
 * Function : 函数型接口
 *      R apply(T t);
 *
 * Predicate : 断言型接口
 *      boolean test(T t);
 *
 */
public class TestLambda extends BaseTest {

    @Test
    public void testConsumer(){
        // 消费型接口
        sellCar(100,money-> System.out.println(money));
    }

    @Test
    public void testSupplier(){
        // 供给型接口
        List integerPutCollection = createIntegerPutCollection(4, () -> (int) (Math.random() * 100));
        integerPutCollection.stream().forEach(System.out::println);
    }

    @Test
    public void testFunction(){
        // 函数型接口
        String strs = handleString("你好", str -> str + "world");
        System.out.println(strs);
    }

    @Test
    public void testPredicate(){
        // 断言型接口
        List list1 = Arrays.asList("lsj","ldh","wyz");
        List list = filterStr(list1, str -> str.contains("l"));
        list.stream().forEach(System.out::println);
    }

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

    // 处理字符串
    public String handleString(String str,Function function){
        return function.apply(str);
    }

    // 产生一些整数,并放入集合中
    public List createIntegerPutCollection(int num,Supplier supplier){
        List list = new ArrayList<>();

        for (int i = 0; i < num; i++) {
            list.add(supplier.get());
        }

        return list;
    }

    public void sellCar(double money,Consumer consumer){
        consumer.accept(money);
    }

}



JAVA8 内置的四大函数式接口_第1张图片
java内置四大函数式接口

JAVA8 内置的四大函数式接口_第2张图片
其他接口

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