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