Java : BiConsumer - API使用例

BiConsumer (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

2つの入力引数を受け取って結果を返さないオペレーションを表します。 これは、Consumerを、引数を2個取るように特殊化したものです。 BiConsumerは他のほとんどの関数型インタフェースと異なり、副作用を介して動作することを期待されます。

クラス構成

BiConsumer は、パラメータを2つとり、戻り値なしの関数型インタフェースです。

final var map = Map.of("aaa", 10, "bbb", 20, "ccc", 30);
System.out.println(map); // {ccc=30, aaa=10, bbb=20}

final var action = new BiConsumer<String, Integer>() {
    @Override
    public void accept(String key, Integer value) {
        System.out.printf("key = %s : value = %d%n", key, value);
    }
};

map.forEach(action);

// 結果
// ↓
//key = ccc : value = 30
//key = aaa : value = 10
//key = bbb : value = 20

// ラムダ式の例です。
map.forEach((key, value) -> System.out.printf("key = %s : value = %d%n", key, value));

// 結果
// ↓
//key = ccc : value = 30
//key = aaa : value = 10
//key = bbb : value = 20

メソッド

void accept (T t, U u)

指定された引数でこのオペレーションを実行します。

final var biConsumer = new BiConsumer<String, Integer>() {
    @Override
    public void accept(String t, Integer u) {
        System.out.printf("t = %s : u = %d%n", t, u);
    }
};

biConsumer.accept("abcd", 123);

// 結果
// ↓
//t = abcd : u = 123

default BiConsumer<T,U> andThen (BiConsumer<? super T,? super U> after)

このオペレーションを実行した後、続けてafterオペレーションを実行する合成BiConsumerを返します。

final var biConsumer1 = new BiConsumer<StringBuilder, Integer>() {
    @Override
    public void accept(StringBuilder sb, Integer value) {
        System.out.println("-- before --");
        sb.append("value = %d%n".formatted(value));
        System.out.print(sb);
    }
};

final var biConsumer2 = biConsumer1.andThen((sb, value) -> {
    System.out.println("-- after --");
    sb.append("value = %d%n".formatted(value * 10));
    System.out.print(sb);
});


biConsumer2.accept(new StringBuilder(), 123);

// 結果
// ↓
//-- before --
//value = 123
//-- after --
//value = 123
//value = 1230

関連記事

ページの先頭へ