记录jdk8 lambda学习2

    技术2025-07-10  14

    package java8; import org.junit.jupiter.api.Test; import java.lang.reflect.Array; 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; /** * 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 TestLambda3 { // Consumer<T> : 消费性接口 @Test public void test1(){ happy(1000,(m) -> System.out.println(m)); happy(1000, new Consumer() { @Override public void accept(Object o) { System.out.println(o); } }); } public void happy(double money, Consumer con){ con.accept(money); } // Supplier<T> : 供给型接口 @Test public void test2(){ List<Integer> aa=getNumList(10,() -> (int)(Math.random()*100)); for(Integer a:aa){ System.out.println(a); } } //产生一些整数 并放入集合中 public List<Integer> getNumList(int num, Supplier<Integer> sup){ List<Integer> list=new ArrayList<>(); for(int i=0;i<num;i++){ Integer n=sup.get(); list.add(n); } return list; } //Function<T,R> : 函数型接口 @Test public void test3(){ String newstr=strHandler("\t 嗷嗷嗷 ",(str) ->str.trim()); System.out.println(newstr); } //需求:处理字符串 public String strHandler(String str,Function<String,String> fun){ return fun.apply(str); } //Predicate<T> : 断言型接口 @Test public void test4(){ List<String> list= Arrays.asList("hello","atguigu","Lambda","ww"); List<String> strlist=filterStr(list,(t)-> t.length()>3); strlist.forEach(System.out::println); } //需求:满足条件的字符串添加到集合中 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; } }

     

    Processed: 0.013, SQL: 9