Java8的一些新特性 java.util.function包
来源:互联网 发布:广州商陆花软件多少钱 编辑:程序博客网 时间:2024/06/10 18:23
函数式接口标注 @FunctionalInterface,这样的接口只能有一个抽象方法。
java.util.function包下面有大量的函数式接口,主要分为以下几个基本类别
Function 输入参数为类型T, 输出为类型R, 记作 T -> R
Consumer 输入参数为类型T, 输出为void, 记作 T -> void
Supplier 没有输入参数, 输出为类型T, 记作 void -> T
Predicate 输入参数为类型T, 输出为类型boolean, 记作 T -> boolean
例如计算字符串长度的Function例子
再例如,判断字符串是否为空的Predicate
如果输入参数是两个,这是可以使用
BiFunction<T,U,R> 记作 <T,U> -> R
BiConsumer<T,U> 记作 <T,U> -> void
BiPredicate<T,U> 记作 <T,U> -> boolean
例如计算两个字符串长度的BiFunction例子
如果一个Function的输入参数类型和输入参数类型相同,即Function<T, T>,这时可以使用 UnaryOperator<T>
例如下面的例子,输入参数和输出参数类型都是String
如果使用BiFunction时,两个输入参数和输出参数均是同一类型,即BiFunction<T, T, T>,这时可以使用BinaryOperator<T>
例如
如果输入参数是基本类型,为了避免自动拆箱装箱,可以使用
DoubleConsumer 记作 double -> void
DoubleFunction<R> 记作 double -> R
DoublePredicate 记作 double -> boolean
DoubleSupplier 记作 void -> double
IntConsumer 记作 int -> void
IntFunction<R> 记作 int -> R
IntPredicate 记作 int -> boolean
IntSupplier 记作 void -> int
LongConsumer 记作 long -> void
LongFunction<R> 记作 long -> R
LongPredicate 记作 long -> boolean
LongSupplier 记作 void -> long
LongToDoubleFunction 记作 long -> double
LongToIntFunction 记作 long -> double
DoubleToLongFunction 记作 double -> long
DoubleToIntFunction 记作 double -> int
IntToLongFunction 记作 int -> long
IntToDoubleFunction 记作 int -> double
ToIntFunction<T> 记作 T -> int
ToDoubleFunction<T> 记作 T -> double
ToLongFunction<T> 记作 T -> long
ToIntBiFunction<T,U> 记作 <T,U> -> int
ToDoubleBiFunction<T,U> 记作 <T,U> -> double
ToLongBiFunction<T,U> 记作 <T,U> -> long
IntBinaryOperator 记作 <int, int> -> int
IntUnaryOperator 记作 int -> int
DoubleBinaryOperator 记作 <double, double> -> double
DoubleUnaryOperator 记作 double -> double
LongBinaryOperator 记作 <long, long> -> long
LongUnaryOperator 记作 long -> long
ObjDoubleConsumer<T> 记作 <T, double> -> void
ObjIntConsumer<T> 记作 <T, int> -> void
ObjLongConsumer<T> 记作 <T, long> -> void
java.util.function包下面有大量的函数式接口,主要分为以下几个基本类别
Function 输入参数为类型T, 输出为类型R, 记作 T -> R
Consumer 输入参数为类型T, 输出为void, 记作 T -> void
Supplier 没有输入参数, 输出为类型T, 记作 void -> T
Predicate 输入参数为类型T, 输出为类型boolean, 记作 T -> boolean
例如计算字符串长度的Function例子
public class MyFunction implements Function<String, Integer> {@Overridepublic Integer apply(String s) {return s.length();}}
再例如,判断字符串是否为空的Predicate
public class StringIsEmptyPredict implements Predicate<String> {@Overridepublic boolean test(String s) {return s == null || s.isEmpty();}}
如果输入参数是两个,这是可以使用
BiFunction<T,U,R> 记作 <T,U> -> R
BiConsumer<T,U> 记作 <T,U> -> void
BiPredicate<T,U> 记作 <T,U> -> boolean
例如计算两个字符串长度的BiFunction例子
public class MyBiFunction implements BiFunction<String, String, Integer> {@Overridepublic Integer apply(String s1, String s2) {return s1.length() + s2.length();}}
如果一个Function的输入参数类型和输入参数类型相同,即Function<T, T>,这时可以使用 UnaryOperator<T>
例如下面的例子,输入参数和输出参数类型都是String
public class MyUnaryOperator implements UnaryOperator<String> {@Overridepublic String apply(String s) {return "Hello " + s;}}
如果使用BiFunction时,两个输入参数和输出参数均是同一类型,即BiFunction<T, T, T>,这时可以使用BinaryOperator<T>
例如
public class MyBinaryOperator implements BinaryOperator<String> {@Overridepublic String apply(String s1, String s2) {return s1 + s2;}}
如果输入参数是基本类型,为了避免自动拆箱装箱,可以使用
DoubleConsumer 记作 double -> void
DoubleFunction<R> 记作 double -> R
DoublePredicate 记作 double -> boolean
DoubleSupplier 记作 void -> double
IntConsumer 记作 int -> void
IntFunction<R> 记作 int -> R
IntPredicate 记作 int -> boolean
IntSupplier 记作 void -> int
LongConsumer 记作 long -> void
LongFunction<R> 记作 long -> R
LongPredicate 记作 long -> boolean
LongSupplier 记作 void -> long
LongToDoubleFunction 记作 long -> double
LongToIntFunction 记作 long -> double
DoubleToLongFunction 记作 double -> long
DoubleToIntFunction 记作 double -> int
IntToLongFunction 记作 int -> long
IntToDoubleFunction 记作 int -> double
ToIntFunction<T> 记作 T -> int
ToDoubleFunction<T> 记作 T -> double
ToLongFunction<T> 记作 T -> long
ToIntBiFunction<T,U> 记作 <T,U> -> int
ToDoubleBiFunction<T,U> 记作 <T,U> -> double
ToLongBiFunction<T,U> 记作 <T,U> -> long
IntBinaryOperator 记作 <int, int> -> int
IntUnaryOperator 记作 int -> int
DoubleBinaryOperator 记作 <double, double> -> double
DoubleUnaryOperator 记作 double -> double
LongBinaryOperator 记作 <long, long> -> long
LongUnaryOperator 记作 long -> long
ObjDoubleConsumer<T> 记作 <T, double> -> void
ObjIntConsumer<T> 记作 <T, int> -> void
ObjLongConsumer<T> 记作 <T, long> -> void
阅读全文
0 0
- Java8的一些新特性 java.util.function包
- Function接口 – Java8中java.util.function包下的函数式接口
- Java8一些新特性
- 【java学习】java8新特性:java.util.stream
- Java8 新特性之Stream----java.util.stream
- Java8 java.util.function包解析(Function,Consumer,Predicate,Supplier)
- 【java学习笔记】java8的新特性
- Java8对Java语法的新特性
- JAVA8的新特性
- Java8的新特性
- JAVA8的新特性
- java8的新特性
- Java8的新特性
- JAVA8的新特性
- Java8的新特性
- java8的新特性
- java8的新特性
- Java8以及Java9的一些有用的新特性总结
- web前端关于百度地图反地理编码的问题
- python行列转换脚本编写
- HTTP权威指南总结
- C++ vector用法
- DOM 是什么?以及XML 解析
- Java8的一些新特性 java.util.function包
- 周志华《机器学习》——学习笔记
- 怎么写robots文件?robots文件有什么用?
- JAVA中,JSONObject和JSONArray的遍历
- springMVC学习之JSTL与URL相关的行为
- .Bat语言基本语法(Batch)
- html中的表单元素
- Python 字典(Dictionary)
- Hibernate 批量处理