Java函数式接口
1. Consumer接口
接受一个固定类型的参数,无返回值
//使用方式
// 1 使用consumer接口实现方法
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
// 2 lambda函数方式
Consumer<String> consumer = (s) -> System.out.println(s);
// 3 使用方法引用,方法引用也是一个consumer
stream = Stream.of("aaa", "bbb", "ddd", "ccc", "fff");
Consumer consumer2 = System.out::println;
stream.forEach(consumer);
2. Supplier 接口
返回一个固定类型的对象 无参数
//① 使用Supplier接口实现方法,只有一个get方法,无参数,返回一个值
Supplier<Integer> supplier = new Supplier<Integer>() {
@Override
public Integer get() {
//返回一个随机值
return new Random().nextInt();
}
};
//② 使用lambda表达式,
supplier = () -> new Random().nextInt();
//③ 使用方法引用
Supplier<Double> supplier2 = Math::random;
3.Function 接口
// function的作用是转换,将一个值转为另外一个值
Function<String, Integer> function = new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return s.length();//获取每个字符串的长度,并且返回
}
};
// lambda 写法
Function<String, Integer> function = (s)->{
return s.length();
}