新时代程序员必须要会的 :lambda表达式、链式编程、函数式接口、Stream流式计算
什么是函数式接口
1.函数型接口
package com.kuang.function;
import java.util.function.Function;
/**
* Function函数型接口 有一个输入参数,有一个输出
* 只要是函数式接口,就可以用lambda表达式简化
*/
public class Demo01 {
public static void main(String[] args) {
// Function<Integer,String> function = new Function<Integer,String>() {
// @Override
// public String apply(Integer i) {
// return String.valueOf(i);
// }
// };
Function<Integer,String> function = i -> String.valueOf(i);
System.out.println(function.apply(5));
}
}
2.断言型接口
package com.kuang.function;
import java.util.function.Predicate;
/**
* Predicate断言式接口 有一个输入参数,返回boolean值
* 只要是函数式接口,就可以用lambda表达式简化
*/
public class Demo02 {
public static void main(String[] args) {
// Predicate<Integer> predicate = new Predicate<Integer>() {
// @Override
// public boolean test(Integer integer) {
// if (integer > 5) {
// return true;
// }
// return false;
// }
// };
Predicate<Integer> predicate = integer -> {
if (integer > 5) {
return true;
}
return false;
};
System.out.println(predicate.test(6));
}
}
3.消费型接口
package com.kuang.function;
import java.util.function.Consumer;
/**
* Consumer消费型接口 有一个输入参数,无返回值
* 只要是函数式接口,就可以用lambda表达式简化
*/
public class Demo03 {
public static void main(String[] args) {
// Consumer<String> consumer = new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// };
Consumer<String> consumer = s -> System.out.println(s);
consumer.accept("我好帅");
}
}
4.供给型接口
package com.kuang.function;
import java.util.function.Supplier;
/**
* Supplier供给型接口 无参数,有返回值
* 只要是函数式接口,就可以用lambda表达式简化
*/
public class Demo04 {
public static void main(String[] args) {
// Supplier<String> supplier = new Supplier() {
// @Override
// public String get() {
// return "good study";
// }
// };
Supplier<String> supplier = () -> "good study";
System.out.println(supplier.get());
}
}