count() 操作で終わっている Stream API 呼び出しチェーンで、最適化可能なものを報告します。
このインスペクションにより、次のように呼び出しチェーンを置換できます。
Collection.stream().count() → Collection.size() Java 8 の Collection.stream().count() はコレクションの要素を実際に反復処理してカウントしますが、Collection.size() は大部分のコレクションをより高速に処理します。Stream.flatMap(Collection::stream).count() → Stream.mapToLong(Collection::size).sum() 同様に、すべてのネストしたコレクションを反復処理する必要はありません。 代わりに、それらのコレクションのサイズを合計できます。Stream.filter(o -> ...).count() > 0 → Stream.anyMatch(o -> ...) 元の呼び出しとは異なり、anyMatch() は一致する要素が見つかった時点で処理を停止する場合があります。Stream.filter(o -> ...).count() == 0 → Stream.noneMatch(o -> ...) 上記と同様です。
置換後のコードに anyMatch() のような短絡操作が含まれる場合、中間ストリーム操作によって副作用が発生した場合に動作が目に見える形で変わる可能性があります。 一般的に、Stream API 呼び出しでは副作用を回避する必要があります。