Java8的特点--函数接口实例
java.util.function包有许多预定义的功能接口。这些函数接口可以作为目标分配给lambda表达式或方法/构造器引用。
在对象的迭代过程中,这些接口将非常有用,流API处理和操作,如过滤数据,处理数字数据。
这篇文章介绍了各种数字(Integer, Long, Double相关)功能接口的例子。
ToLongBiFunction接口
这个接口需要两个参数作为输入,产生一个长类型的输出。下面的代码需要两个长的值,使用lambda表达式添加这个值,最后在函数上调用applyAsLong来返回长的结果。
ToLongBiFunction addLongFunction=(value1,value2)-> value1+value2;
System.out.println(addLongFunction.applyAsLong(50l,40l)); // 90
ToLongFunction接口
这个函数接受任何值并产生长值。
import java.util.ArrayList;
import java.util.List;
import java.util.function.ToLongFunction;
public class MyToLongFunctionExample {
public static void main(String[] args) {
// program example 1
List list = new ArrayList();
list.add("123");
list.add("43");
list.add("56");
list.add("53");
long[] result = list.stream().mapToLong(element -> Long.parseLong(element)).toArray();
System.out.println(result);
// program example 2
ToLongFunction longFunction = value -> Long.parseLong(value);
System.out.println(longFunction.applyAsLong("123"));
}
}
在上面的代码中,提出了两个例子:
第一个例子是将字符串列表转换为长字符串 使用流接口创建一个字符串列表,用mapToLong方法遍历每个元素 mapToLong(ToLongFunction f)使用ToLongFunction间接使用lambda表达式。
下一个例子使用ToLongFunction将字符串数据转换为long对象。
ToDoubleFunction接口
这是一个用于从对象中产生双倍值的函数表示:
import java.util.function.ToDoubleFunction;
public class MyToDoubleFunctionExample {
public static void main(String[] args) {
ToDoubleFunction doubleFunction = value -> Double.parseDouble(value);
System.out.println(doubleFunction.applyAsDouble("54")); // output 54
}
}
ToDoubleBiFunction接口
这个函数需要两个参数作为输入,产生双倍值。下面的代码需要两个整数值,使用lambda表达式添加这些值并分配给函数接口,最后在函数上调用applyAsDouble来返回双倍结果。
ToDoubleBiFunction addDoubleFunction=(value1,value2)-> value1+value2;
System.out.println(addDoubleFunction.applyAsDouble(5,4)); //outputs 9
ToIntFunction 示例
取一个对象数据并产生整数值。这是一个使用ToInitFunction接口和lambda表达式将一个字符串转换为Integer的例子
ToIntFunction intFunction=value-> Integer.parseInt(value);
System.out.println(intFunction.applyAsInt("5")); // output 5
ToIntBiFunctioninterface
这个接口接受两个参数并产生一个整数结果
ToIntBiFunction addIntFunction=(value1,value2)-> value1+value2;
System.out.println(addIntFunction.applyAsInt(15,14)); //outputs 29
DoubleToLongFunction
这个接口接收双倍数的值,并产生长值的结果
DoubleToLongFunction function = value-> new Double(value).longValue();
System.out.println(function.applyAsLong(43.7)); //outputs 43
IntFunction示例
这个接口接收整数值作为参数,并产生给定数据类型的结果:
IntFunction function= value-> String.valueOf(value);
System.out.println(function.apply(43)); // outputs "43"
System.out.println(function.apply(43).length()); // outputs 2
IntToLongFunction接口
这个接口接收一个整数作为输入,并产生Long值
IntToLongFunction fucntion= (value) -> Long.valueOf(value);
System.out.println(fucntion.applyAsLong(21));
LongFunction接口
这个接口接受长值作为参数,并产生给定数据类型的结果:
LongFunction longFunction= value-> String.valueOf(value);
System.out.println(longFunction.apply(512l)); // outputs "512"
System.out.println(longFunction.apply(513l).length()); // outputs 3
LongToDoubleFunction接口
该接口接受长值作为输入,产生双倍值作为输出
LongToDoubleFunction longTDoubleFunction= (value) -> Double.valueOf(value);
System.out.println(longTDoubleFunction.applyAsDouble(21l)); //outputs 21.0
LongToIntFunction接口
该接口接受长值并输出int值
LongToIntFunction longToIntFunction = value-> (int)(value);
System.out.println(longToIntFunction.applyAsInt(20143)); // outputs 20143