がありStream<String>
、が欲しいですMap<Integer, String>
。私の分類子関数を呼び出しましょうgetKey(String)
- それは高価になる可能性があります。場合によってはゼロが返されます。これは、文字列を破棄し、結果のマップに含めないことを意味します。
したがって、次のコードを使用できます。
Stream<String> stringStream;
Map<Integer, String> result =
stringStream.collect(Collectors.groupingBy(this::getKey, Collectors.joining());
result.remove(0);
これにより、最初に不要な文字列がゼロでキー付けされたマップに追加され、次にそれらが削除されます。それらの多くがあるかもしれません。そもそもそれらをマップに追加しないようにするエレガントな方法はありますか?
グループ化の前にフィルター ステップを追加したくありません。これは、決定/分類コードを 2 回実行することを意味するためです。