java8函数式编程

/ 转载 / 没有评论 / 485浏览

转自https://zhuanlan.zhihu.com/p/63107670

Java8里面函数式编程

Java8里面引入了新的一个包java.util.function。里面定义了下面几个核心接口:

  • Function<T,R>:接收一个参数,返回一个结果。
  • Consumer<T>:接收一个参数,无返回。
  • Predicate<T>:接收一个参数,返回一个boolean的结果。
  • Supplier<R>:无参数,返回一个结果。
  • BiFunction<T,V,R>:接收两个参数,返回一个结果。
  • BiConsumer<T,V>:接收两个参数,无返回值。
  • BiPredicate<T,V>:接收两个参数,返回boolean值。

Function接口

//function表示具有返回值的,具有一个参数的方法
Function<String,Integer> function1=Integer::valueOf;
Function function2=String::valueOf;
//可以用lambda表达式
Function<Object,String> function3=(a)->a.toString();
//报错,因为无返回值
//Function out=System.out::println;
//返回值是Boolean的function
String o="123";
Function<String,Boolean> function4=o::equals;
boolean equals=function4.apply("123");

Consumer接口

//Consumer可以用来表示只有一个参数,无返回值的方法
Consumer consumer=System.out::println;
consumer.accept("123");
//可以用lambda表达式
Consumer consumer2=(a)->{};

Predicate接口

//用Predicate来表示
Predicate<String> predicate=o::equals;

Supplier接口

//无参数有返回
Supplier<Integer> supplier=o::hashCode;
IntSupplier intSupplier=o::hashCode;
Supplier supplier2=()-> "test";

二元参数相关

//二个参数的函数
BiFunction<String,String, Boolean> test= (str,str2)->true;
BiConsumer<String,String> test2=(str,str2)->{};
BiPredicate<String,String> test3=(str,str2)->true;

发布于 2019-04-20