如今程序员必会的四个操作:
lambda 表达式
、连式编程
、函数式接口
、Stream 流式计算
四大函数式接口
即只有一个方法的接口,即类上有注解 @FunctionalInterface
的接口,比如Runnable接口、foreach()等等。在Java中有大量的函数式接口,它可以简化编程模型,在新版本的框架底层大量运用。
1、Function 函数式接口
有一个输入参数,有一个返回值类型
public static void main(String[] args) {
Function function = new Function<String, String>() {
@Override
public String apply(String str) {
return str;
}
};
System.out.println(function.apply("zzz"));
}
只要是函数式接口,就可以用lambda表达式简化:
public static void main(String[] args) {
Function function = (str)->{return str;};
System.out.println(function.apply("zzz"));
}
2、Predicate 断定型接口
有一个参数,且返回值只能是布尔值
public static void main(String[] args) {
// 判断字符串是否为空
Predicate<String> predicate = new Predicate<String>() {
@Override
public boolean test(String s) {
return s.isEmpty();
}
};
System.out.println(predicate.test(""));
}
lambda版:
public static void main(String[] args) {
// 判断字符串是否为空
Predicate<String> predicate = (str)->{return str.isEmpty();};
System.out.println(predicate.test(""));
}
3、Consumer 消费型接口
只有一个参数,没有返回值
public static void main(String[] args) {
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String str) {
System.out.println(str);
}
};
consumer.accept("zzz");
}
// lambda版
public static void main(String[] args) {
Consumer<String> consumer = (str)->{System.out.println(str);};
consumer.accept("zzz");
}
4、Supplier 供给型接口
没有参数,只有返回值
public static void main(String[] args) {
Supplier<Integer> supplier = new Supplier<Integer>() {
@Override
public Integer get() {
return 123;
}
};
System.out.println(supplier.get());
}
lambda版
public static void main(String[] args) {
Supplier supplier = ()->{return 123;};
System.out.println(supplier.get());
}
Stream 流式计算
下面这个实力就是流式计算(同时也包括了 lambda表达式、函数式接口、 链式编程),集合、数据结构这些都是负责存储的,而负责计算的是流。