java8中内置的四大核心函数式接口 1.Consumer<T>:消费型接口(带泛型的接口),有参数,无返回值 void accept(T t); 2.Supplier<T>:供给型接口,无参数,有返回值 T get(); 3.Function<T,R>:函数型接口 R apply(T t); 4.Predicate<T>:断言型接口 boolean test(T t);
package lambda; import org.junit.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; public class TestLambda3 { //消费型接口 @Test public void test1() { happy(1000, m -> System.out.println("买化妆品消费" + m + "元")); } public void happy(double m, Consumer<Double> consumer) { consumer.accept(m); } //供给型接口 @Test public void test2() { List<Integer> result = getNumberList(10, () -> (int) (Math.random() * 100)); for (Integer integer : result) { System.out.println(integer); } } //产生指定个数的整数(100以内),并将他们放到集合中去 public List<Integer> getNumberList(int num, Supplier<Integer> supplier) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < num; i++) { Integer temp = supplier.get(); list.add(temp); } return list; } //函数型接口 //用于处理字符串 @Test public void test3() { System.out.println(strHandler("today", str -> str.toUpperCase())); } public String strHandler(String str, Function<String, String> function) { return function.apply(str); } //断言型接口 @Test public void test4() { List<String> strList = Arrays.asList("asgdigasi", "shdih", "xs", "hdshasd", "c"); List<String> list = filterList(strList, (x) -> x.length() > 3); for (String s : list) { System.out.println(s); } } //将满足条件的字符串放到集合中去 public List<String> filterList(List<String> strList, Predicate<String> predicate) { List<String> list = new ArrayList<>(); for (String s : strList) { if(predicate.test(s)){ list.add(s); } } return list; } }
Java8新特性之Lambda表达式(三)
最新推荐文章于 2024-06-05 17:28:53 发布