Java ストリームの Peek 関数: デバッグだけではありません?
Java ストリームの世界では、peek() 関数が関連付けられることがよくあります。デバッグ付き。しかし、他の目的に利用できたらどうでしょうか?
シナリオ:
それぞれにユーザー名、パスワード、ログイン方法が含まれる Account オブジェクトのリストがあると仮定します。アカウントへのログインを試行する Consumer ログインと、アカウントがログインしているかどうかを確認する述語 loggedIn もあります。
これらを使用して、次のように各アカウントへのログインを試行し、失敗したアカウントを除外して、ログインしたアカウントを収集するストリームを構築します。
List<Account> accounts; //assume it's been setup List<Account> loggedInAccount = accounts.stream() .peek(login) .filter(loggedIn) .collect(Collectors.toList());
潜在的な欠点:
このコードは意図したとおりに動作しているように見えますが、このコードでの Peak() の使用には潜在的な欠点がいくつかあります。 context.
影響:
これらの欠点は、順序が異なるタスクでは、peek() を注意して使用する必要があることを示唆しています。完全な処理が重要です。
代替案アプローチ:
peek() の欠点が望ましくない場合、代替アプローチには次のものがあります:
結論:
peek() は次のような用途に役立ちます。デバッグ以外の目的での使用は、処理順序、不完全な処理、実装固有の最適化に関する潜在的な問題のため、慎重に検討する必要があります。代替アプローチにより、より信頼性が高く予測可能な結果が得られる可能性があります。
以上がJava Streams の「peek()」関数はデバッグ以外にも適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。