Java : BiFunction - API使用例
BiFunction (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
2つの引数を受け取って結果を生成する関数を表します。 これは、Functionを、引数を2個取るように特殊化したものです。
BiFunction は、パラメータを2つとり、戻り値ありの関数型インタフェースです。
final var func = new BiFunction<Integer, Double, String>() {
@Override
public String apply(Integer i, Double d) {
return "%d : %f".formatted(i, d);
}
};
final var ret = func.apply(123, 0.456);
System.out.println(ret); // 123 : 0.456000
final var map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
System.out.println(map); // {a=1, b=2}
final BiFunction<String, Integer, Integer> func
= (key, value) -> "a".equals(key) ? value * 10 : value * 100;
map.compute("a", func);
System.out.println(map); // {a=10, b=2}
map.compute("b", func);
System.out.println(map); // {a=10, b=200}
メソッド
default <V> BiFunction<T,U,V> andThen (Function<? super R,? extends V> after)
まず入力にこの関数を適用し、次に結果に関数afterを適用する合成関数を返します。
final var func1 = new BiFunction<Integer, Double, String>() {
@Override
public String apply(Integer i, Double d) {
return "%d : %f".formatted(i, d);
}
};
final var after = new Function<String, String>() {
@Override
public String apply(String str) {
return str + " ... andThen!";
}
};
System.out.println(func1.apply(123, 0.456)); // 123 : 0.456000
final var func2 = func1.andThen(after);
System.out.println(func2.apply(123, 0.456)); // 123 : 0.456000 ... andThen!
R apply (T t, U u)
指定された引数にこの関数を適用します。
final var func = new BiFunction<Integer, Double, String>() {
@Override
public String apply(Integer i, Double d) {
return "%d : %f".formatted(i, d);
}
};
final var ret = func.apply(123, 0.456);
System.out.println(ret); // 123 : 0.456000