新时代的程序员:lambda表达式,链式编程,函数式接口,Stream流式计算
1.什么是函数式接口?
- 只有一个抽象方法的接口。
2.Java四大函数式接口
2.1 Function函数式接口
- Function函数式接口,有一个输入参数,有一个输出
- 实例:
package com.lee.Java四大函数接口;
import java.util.function.Function;
public class FunctionDemo {
public static void main(String[] args) {
/*
* Function 函数型接口, 有一个输入参数,有一个输出
* 只要是 函数型接口 可以 用 lambda表达式简化
*/
/* 普通方式
Function<String, String> function = new Function<>() {
@Override
public String apply(String s) {
return s;
}
};
System.out.println(function.apply("hello,java!"));
*/
//使用lambda表达式简化
Function<String, String> function = (s)->{return s;};
System.out.println(function.apply("hello,java2!"));
}
}
2.2 断口型函数式接口
- 断定型接口:有一个输入参数,返回值只能是 布尔值!
- 实例:
package com.lee.Java四大函数接口;
import java.util.function.Predicate;
public class PredicateDemo {
public static void main(String[] args) {
/* 普通
Predicate<String> predicate = new Predicate<>() {
@Override
public boolean test(String s) {
return s.isEmpty();
}
};
System.out.println(predicate.test("ok"));
*/
//Lambda表达式
Predicate<String> predicate = (s)->{return s.isEmpty();};
System.out.println(predicate.test("ok"));
}
}
2.3 Consumer消费型函数式接口
- 只有输入,没有返回
- 实例
package com.lee.Java四大函数接口;
import java.util.function.Consumer;
public class ConsumerDemo {
public static void main(String[] args) {
/*普通方式
new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
}.accept("hello");
*/
Consumer<String> consumer = (s)->{
System.out.println(s);
};
consumer.accept("hello");
}
}
2.4 供给型函数式接口
- 没有参数,只有返回值
- 实例
package com.lee.Java四大函数接口;
import java.util.function.Supplier;
public class SupplierDemo {
public static void main(String[] args) {
/*
new Supplier<String>() {
@Override
public String get() {
return "1024";
}
}.get();
*/
//Lambda表达式
Supplier<String> supplier = ()->{return "1024";};
supplier.get();
}
}