並列ストリーム内のログを追加するときに遭遇ヌルオブジェクト

SS」:

わからないラムダ式に新しいここ構文、およびソートについて。

            itemStream.parallel().filter(Objects::nonNull).forEach( 
                (item) -> randomMethod(item));

ヌル項目に遭遇した場合に何がループのために以前に持っていたと、nullチェックしてからの警告でした

                    log.warn("Skipping a null item!");

ストリームベースのアプローチで(まだフィルタリングながら)それはヌルオブジェクトに遭遇したときにはどうすればログインできますか?

デヴィッド・コンラッド:

あなたは使用することができますStream::peek

itemStream.parallel()
    .peek(item -> { if (item == null) log.warn("Skipping a null item!"); })
    .filter(Objects::nonNull)
    .forEach(item -> randomMethod(item));

あなたはまたのためのメソッド参照を使用することができますrandomMethod(ここでは、私はそれがメンバーだと仮定しますthis):

itemStream.parallel()
    .peek(item -> { if (item == null) log.warn("Skipping a null item!"); })
    .filter(Objects::nonNull)
    .forEach(this::randomMethod);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222644&siteId=1