2 回答
TA贡献1836条经验 获得超3个赞
修改以反映示例
首先,定义一些必需的BiFunction
BiFunction<Integer, int[], Integer> func = (a, b) ->
{
for (int i = 0; i < b.length; i++) {
a *= b[i];
}
return Integer.valueOf(a);
};
现在定义一些数据。
//Stream source
int[] data = { 10, 20, 30
};
// parameter source
int[] params = { 3, 5, 11
};
Convert data to stream
IntStream targets = Arrays.stream(data);
现在应用映射函数。
Map<Integer, Integer> results = targets.boxed().collect(
Collectors.toMap(t -> t, t -> func.apply(t, params)));
System.out.println(results);
上面的代码获取stream并创建一个映射,其中的数据充当该数据,keys然后获取这些相同的键并将它们应用于参数列表的功能。这成为地图的价值。
根据初始流类型,您可能需要使用mapToObj或map代替上述方法。boxed()
TA贡献1895条经验 获得超3个赞
功能接口(简单来说)是具有一种方法的接口。
您可能想要注释接口以@FunctionalInterface记录其用途,并确保没有人意外添加其他方法。
方法的名称并不重要,但当然应该适合它应该做的事情。
因此,如果您需要一个具有 3 个参数的函数,请创建您自己的函数接口。您可以使用泛型类型参数使其具体化或通用化。
@FunctionalInterface
interface TripleString {
String doStringOp(String a, String b, String c);
}
@FunctionalInterface
interface TriFunction<T, U, V, R> {
R apply(T t, U u, V v);
}
添加回答
举报