ホームページ >Java >&#&チュートリアル >Java ストリームからすべての最大値を取得するにはどうすればよいですか?
問題:
ラムダ式およびストリーム内の Java の max 関数は通常、次の場合に任意の要素を返します。複数の候補が最大値で同点になります。すべての最大値を返すことが望ましい動作である場合、これは望ましくない可能性があります。
解決策:
現時点では、部分的な結果を明示的に収集せずにこの動作を直接実現する方法はありません。コレクションの中で。以下に 2 つの可能なアプローチを示します。
2 パス アプローチ (コレクション):
コレクターベースのアプローチ (シングルパス):
maxList メソッドを使用してカスタム コレクターを作成します:
static <T> Collector<T, ?, List<T>> maxList(Comparator<? super T> comp) { // Implementation given in the reference answer }
例:
コレクターベースのアプローチの使用:
Stream<String> input = ... ; List<String> result = input.collect(maxList(comparing(String::length)));
これは、次の文字列をすべて含むリストを返します。入力ストリームの最大長。
以上がJava ストリームからすべての最大値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。