JDK8-四大核心函数式接口(三)

来源:互联网 发布:打造世界怎么修改数据 编辑:程序博客网 时间:2024/06/05 14:47
package cn.wcj.jdk8.lambda.test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Predicate;import java.util.function.Supplier;import org.junit.Test;/* * Java8 内置的四大核心函数式接口 *  * Consumer<T> : 消费型接口 *      void accept(T t); *  * Supplier<T> : 供给型接口 *      T get();  *  * Function<T, R> : 函数型接口 *      R apply(T t); *  * Predicate<T> : 断言型接口 *      boolean test(T t); *  */public class LambdaTest3 {    //Consumer<T> : 消费型接口    @Test    public void test1() {        happy(50000.0, (money)->System.out.println("我们彤哥喜欢大保健,每次消费"+money+"元")) ;    }    public void happy(Double money,Consumer<Double> consumer){        consumer.accept(money);      }    //Supplier<T> : 供给型接口    @Test    public void test2(){        List<Integer> list = supply(10,()->(int)(Math.random()*100))  ;        list.forEach(System.out::println);    }    public List<Integer> supply(Integer num ,Supplier<Integer> supplier){           List<Integer> resultList=new ArrayList<Integer>()   ;           for(int x=0;x<num;x++)                 resultList.add(supplier.get())   ;           return resultList ;    }    //Function<T, R> : 函数型接口    @Test    public void test3(){        String string = handleStr("\t\t\t\t 我大软院威武!!!   ",(str)->str.trim())    ;        System.out.println(string)   ;        String string2 = handleStr("我大软院威武", str->str.substring(2, 6));        System.out.println(string2);    }    public String handleStr(String target,Function<String, String> fun){        return fun.apply(target)   ;    }    //Predicate<T> : 断言型接口    @Test    public void test4(){        List<String>  list=Arrays.asList("atguigu","mldn","bjpowernode","itcast","sxt")   ;        List<String> newList = filterStr(list,string->string.length()>3) ;        newList.stream().forEach(System.out::println) ;    }    public List<String> filterStr(List<String> list,Predicate<String> predicate){           List<String>  resultList=new ArrayList<>()   ;           int size = list.size();           for(int x=0;x<size;x++){               String string = list.get(x) ;               if(predicate.test(string))                          resultList.add(string)    ;           }           return resultList  ;    }}
原创粉丝点击