問題タブ [java-stream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - アナグラムのリストをリストのマップにグループ化する Java 8 ストリーム関数
Java 8 がリリースされようとしています... Streams について学習しているときに、新しい方法の 1 つを使用してアナグラムをグループ化するというシナリオに入りました。私が直面している問題は、map/reduce 関数を使用して Strings オブジェクトをグループ化する方法が見つからないことです。代わりに、 Aggregate Operations - Reductionに記載されているのと同様の方法を作成する必要がありました。
ドキュメントに基づいて、次を簡単に使用できます。
したがって、Collectors.groupingBy()
使用される方法に基づいてマップのキーが集約されます。ただし、このアプローチは、単純な String プレゼンテーションをラップするにはあまりにも面倒です。
これにより、次のように出力されます。
代わりに、新しい map/reduce 関数を使用して結果を同様のインターフェースに蓄積する、よりシンプルで直接的なソリューションを探していますMap<String, List<String>
。List を Map に変換する方法に基づいて、次のものがあります。
しかし、このコードは 1-1 の Map であるため、キーの衝突が発生します。
これは理にかなっています...groupingBy
値をラップするPOJOを使用せずに、最初のソリューションと同様の出力にそれらをグループ化する方法はありますか?
java - java.util.stream.Streamable はどうなりましたか?
このような初期のjdk8-ea
javadocは、インターフェースがあったことを示しています。java.util.stream.Streamable
Stream
Iterable
Iterator
今は に行き詰まっているように見えますがSupplier<Stream>
、これは確かに同じではありません。
どうしたのStreamable
?
java - プリミティブ ストリームで Collector を使用する
Java 8 には、プリミティブ ストリームでStream::collect(Collector)を使用する方法はありますか?
通常、Stream<Integer>
例として、収集するための 2 つの方法があります。
<R,A> R collect(Collector<? super T,A,R> collector)
<R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
ただしIntStream
、収集する方法は 1 つだけです。
サンプルコードとして、次のものがあります。
ご覧のとおり、メソッドを使用できるようにするために、最初にプリミティブをボックス化しますCollectors.
。
プリミティブを使用しても同じコードを使用できる方法はありますCollectors.toMap
か?
java - Java 8 Stream クラスが AutoCloseable なのはなぜですか?
Java 8 では、Stream クラスは AutoCloseable を実装します。これは、ストリーム インスタンスを明示的に閉じる必要があることを意味します。
ファイル ハンドラーと DB 接続が閉じられる理由がわかりました。しかし、なぜストリーム?
java - 並列ストリーム、コレクター、およびスレッド セーフ
リスト内の各単語の出現回数をカウントする以下の簡単な例を参照してください。
最後に、wordsCount
です{a=2, b=1, c=1}
。
しかし、私のストリームは非常に大きく、ジョブを並列化したいので、次のように書きます:
wordsCount
ただし、それは単純なことに気付いたHashMap
ので、スレッドの安全性を確保するために同時実行マップを明示的に要求する必要があるかどうか疑問に思います。
非同時コレクターを並列ストリームで安全に使用できますか? または、並列ストリームから収集する場合は同時バージョンのみを使用する必要がありますか?