2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
修改以反映示例
首先,定義一些必需的BiFunction
BiFunction<Integer, int[], Integer> func = (a, b) ->
{
for (int i = 0; i < b.length; i++) {
a *= b[i];
}
return Integer.valueOf(a);
};
現(xiàn)在定義一些數(shù)據(jù)。
//Stream source
int[] data = { 10, 20, 30
};
// parameter source
int[] params = { 3, 5, 11
};
Convert data to stream
IntStream targets = Arrays.stream(data);
現(xiàn)在應(yīng)用映射函數(shù)。
Map<Integer, Integer> results = targets.boxed().collect(
Collectors.toMap(t -> t, t -> func.apply(t, params)));
System.out.println(results);
上面的代碼獲取stream并創(chuàng)建一個(gè)映射,其中的數(shù)據(jù)充當(dāng)該數(shù)據(jù),keys然后獲取這些相同的鍵并將它們應(yīng)用于參數(shù)列表的功能。這成為地圖的價(jià)值。
根據(jù)初始流類型,您可能需要使用mapToObj或map代替上述方法。boxed()

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
功能接口(簡單來說)是具有一種方法的接口。
您可能想要注釋接口以@FunctionalInterface記錄其用途,并確保沒有人意外添加其他方法。
方法的名稱并不重要,但當(dāng)然應(yīng)該適合它應(yīng)該做的事情。
因此,如果您需要一個(gè)具有 3 個(gè)參數(shù)的函數(shù),請創(chuàng)建您自己的函數(shù)接口。您可以使用泛型類型參數(shù)使其具體化或通用化。
@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);
}
添加回答
舉報(bào)