148、Java8四大核心内置函数式接口
- Consumer<T> :消费型接口 方法:void accept(T t);
- Supplier<T> :供给型接口 方法:T get();
- Function<T,R> :函数型接口 方法:R apply(T t);
- Predicate<T> :断言型接口 方法:boolean test(T t);
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;
/**
* @author YuZhansheng
* @desc Lambda表达式测试四大内置核心函数式接口
* @create 2019-03-20 15:31
*/
public class TestLambda3 {
//1、Consumer<T> :消费型接口 方法:void accept(T t);
@Test
public void test1(){
happy(1000,(m) -> System.out.println("消费:" + m + "元"));
}
public void happy(double money, Consumer<Double> consumer){
consumer.accept(money);
}
//2、Supplier<T> :供给型接口 方法:T get();
@Test
public void test2(){
List<Integer> numList = getNumList(10,() -> (int)(Math.random() * 100));
for (Integer num : numList){
System.out.println(num);
}
}
//产生指定个数的整数,并放入集合中
public List<Integer> getNumList(int num, Supplier<Integer> supplier){
List<Integer> list = new ArrayList<>();
for (int i = 0; i < num; i++) {
Integer n = supplier.get();
list.add(n);
}
return list;
}
//3、Function<T,R> :函数型接口 方法:R apply(T t);
@Test
public void test3(){
//去除收尾空格
String newStr = strHandler(" 你好志华 ",(str) -> str.trim());
System.out.println(newStr);
//截取字符串操作
String s = strHandler("今天天气真好", (str) -> str.substring(2, 5));
System.out.println(s);
}
//字符串相关操作
public String strHandler(String str, Function<String,String> function){
return function.apply(str);
}
//4、Predicate<T> :断言型接口 方法:boolean test(T t);
@Test
public void test4(){
List<String> list = Arrays.asList("hello","xidian","Lambda","google","youtube");
List<String> stringList = filterStr(list,(s) -> s.length() > 5);
for (String str : stringList){
System.out.println(str);
}
}
//将满足条件的字符串放入到集合
public List<String> filterStr(List<String> list, Predicate<String> predicate){
List<String> strList = new ArrayList<>();
for (String str : list){
if (predicate.test(str)){
strList.add(str);
}
}
return strList;
}
}