Java8 四大内置函数式接口

package com.zwq;

/**
 * @author zhangwq
 */
@FunctionalInterface
public interface MyFunction {
    String doMyOperation(String string);
}
package com.zwq;

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;

/**
 * @author zhangwq
 * Java8 四大内置函数式接口
 * 1、Consumer<T> 消费型接口,无返回值。适用于有参数传入没有返回值的情况
 *    void accept(T t)
 * 2、Supplier<T> 供给型接口
 *     T get()
 * 3、Function(T,R) 函数型接口
 *    R apply(T t)
 * 4、Pridecate<T> 判断型接口
 *     boolean test(T t)
 */
public class Lambda4Functions {

    //1
    @Test
    public void test1(){
        buy(100,e-> System.out.println("买东西花"+e+"元"));
    }
    public void buy(double money,Consumer<Double> consumer){
        consumer.accept(money);
    }

    //2
    @Test
    public void test(){
        List<Double> list = getMoneyList(10,()->Math.random()*100);
        for (Double x:list) {
            System.out.println(x);
        }
    }
    public List<Double> getMoneyList(int num,Supplier<Double> supplier){
        List<Double> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            list.add(supplier.get());
        }
        return list;
    }

    //3
    @Test
    public void test3(){
        String acc = noBlank(" zhangwq \r\r",x->x.trim());
        System.out.println(acc);
    }
    public String noBlank(String str, Function<String,String> function){
        return function.apply(str);
    }

    //4
    @Test
    public void test4(){
        List list = Arrays.asList("zhangsan","lisi","wangwu","zhaoliu");
        System.out.println(stringFilter(list,e->e.contains("a")));
    }
    public List<String> stringFilter(List<String> list, Predicate<String> predicate){
        List<String> retList = new ArrayList<>();
        for(String str:list){
            if(predicate.test(str)){
                retList.add(str);
            }
        }
        return retList;
    }
}

猜你喜欢

转载自blog.csdn.net/zwq_zwq_zwq/article/details/81750845