JAVA-8 learn 03-04

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);


    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值