0、lambda 定义
(parameters)-> expression
(parameters) -> { statements; }
1、 predicate boolean test(T t)
2、Consumer accept(T t)
3、Functioin<T, R> R apply(T, t)
4、Supplier<T> T get()
5、code
package com.tianmeng.java8.day04;
import com.tianmeng.java8.day03.Apple;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.*;
/**
* @program: java8
* @author: TIANMENG
* @date: 2019-11-15 21:42
**/
public class LambdaUsage {
private static List<Apple> filter(List<Apple> source, Predicate<Apple> prediccate){
List<Apple> result = new ArrayList<>();
for (Apple apple :source){
if(prediccate.test(apple)){
result.add(apple);
}
}
return result;
}
private static List<Apple> filterByWeight(List<Apple> source, LongPredicate prediccate){
List<Apple> result = new ArrayList<>();
for (Apple apple :source){
if(prediccate.test(apple.getWeight())){
result.add(apple);
}
}
return result;
}
private static List<Apple> filterByTwo(List<Apple> source, BiPredicate<String, Long> prediccate){
List<Apple> result = new ArrayList<>();
for (Apple apple :source){
if(prediccate.test(apple.getColor(), apple.getWeight())){
result.add(apple);
}
}
return result;
}
public static void simpleTestConsumer(List<Apple> source, Consumer<Apple> consumer){
for (Apple apple : source){
consumer.accept(apple);
}
}
public static void simpleTestBiConsumer(String c, List<Apple> source, BiConsumer<Apple, String> consumer){
for (Apple apple : source){
consumer.accept(apple, c);
}
}
private static String testFunction(Apple apple, Function<Apple, String> function){
return function.apply(apple);
}
private static Apple testBiFunction(String color, Long weight, BiFunction<String, Long, Apple> function){
return function.apply(color, weight);
}
private static Apple createApple(Supplier<Apple> supplier){
return supplier.get();
}
public static void main(String[] args) {
List<Apple> list = Arrays.asList(new Apple("green", 120), new Apple("red",150));
List<Apple> greenList = filter(list, apple -> apple.getColor().equals("green"));
System.out.println(greenList);
List<Apple> weightApple = filterByWeight(list, (w) -> w > 100);
System.out.println(weightApple);
List<Apple> result = filterByTwo(list, (s, w) -> s.equals("green") && w > 100);
System.out.println(result);
System.out.println("==================== ");
simpleTestConsumer(list, apple -> System.out.println(apple));
simpleTestBiConsumer("hi ", list, ((apple, s) -> System.out.println(apple + " " + s)));
System.out.println("==================== ");
String red = testFunction(new Apple("red", 100), apple -> apple.toString());
System.out.println(red);
IntFunction<Double> f = i -> i * 1000.0d;
double result4 = f.apply(10);
System.out.println("==================== ");
System.out.println(result4);
Apple result5 = testBiFunction("blue", 120L, (s, w) -> new Apple(s, w));
System.out.println("==================== ");
System.out.println(result5);
Supplier<String> s = String::new; // method inference
System.out.println(s.get().getClass());
Apple result6 = createApple(() -> new Apple("black", 120));
System.out.println(result6);
}
}
本文深入探讨Java 8中Lambda表达式的应用,通过具体示例讲解如何使用Lambda简化集合过滤、消费者和函数操作。从基本定义到高级用法,如Predicate、Consumer和Function接口的实现,以及 Supplier 的实例化技巧。
1万+

被折叠的 条评论
为什么被折叠?



