問題タブ [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 で Map を変換するにはどうすればよいですか別の地図へラムダを使用していますか?
Java 8 を見始めたばかりで、ラムダを試すために、最近書いた非常に単純なものを書き直そうと思いました。文字列から列へのマップを別の文字列から列へのマップに変換する必要があります。ここで、新しいマップの列は最初のマップの列の防御的なコピーです。列にはコピー コンストラクターがあります。私がこれまでに得た最も近いものは次のとおりです。
しかし、もっと良い方法があるに違いないと確信しており、アドバイスをいただければ幸いです。
java - Java8 ストリームの要素を既存のリストに追加する方法
Collector の Javadoc は、ストリームの要素を新しいリストに収集する方法を示しています。結果を既存の ArrayList に追加するワンライナーはありますか?
java - Java 8 ストリームにインデックスがない理由は何ですか?
Java 8 ストリーム ( ) について疑問に思ってStream<E>
いましたが、次のメソッドがあります。
forEach(Consumer<? super E> action)
forEachOrdered(Consumer<? super E> action)
次の署名を提供しないことに対する議論は何でしたか?
forEachOrdered(BiConsumer<Integer, ? super E> action)
- 次に、ストリーム内のアイテムのインデックスとアイテム自体を返します。
このオーバーロードを使用すると、ストリームが注文された場合に実際にインデックスを使用できます。
どんな議論がそれに反対しているのか、私は本当に興味があります.
Edit、同じことが実際にはIterator<E>
with forEachRemaining
、そしておそらくそれ以上のクラスにも当てはまります。
どのクラスもそのようなオプションを提供していない場合、Java 8 と見なされて拒否されたと思われます。
java - ストリームを使用して無限の合計を計算する
私は Stream API の使用方法の詳細を学ぼうとしています。私が自分自身に与えた課題の 1 つは、無限を取りDoubleStream
、合計を計算しようとするメソッドを作成しようとすることでした (収束すると仮定します)。つまり、メソッドを書きたいのです
次のようなもので呼び出すことができます
合計 (1 + 1/2 2 + 1/3 2 + ... ) = ζ(2) = π 2 /6 を取得します。
これを古い方法で行うための私の大雑把な方法:
これにより、5 桁まで正確な結果が得られます。
以下を使用して、ハッキングされた方法でメソッドを実装できますiterator()
。
しかし、それは古い方法に戻ったような気がします。私は、ストリームを意図した方法で使用する方法などを探していました。
これにより、正しい結果が得られます。
しかし、たまたま、古い方法では 800000 語近くを使用していたことがわかりました。ストリームに制限を設けると、目的が達成できなくなります。問題は、 を使用する以外にストリームを遮断する方法が見当たらないことですlimit()
。つまり、何個のタームがあるかを事前に知っておく必要があります。ストリームで見ているものに基づいて計算された条件に基づいてストリームを停止する方法がわかりません。
これは機能しません:
トレースは、最後の用語が表示されたときに何かが発生したことを示していますが、何も良いことはありません: あるケースでは、計算は停止しましたが、プログラムはまだハングしていました。オラクル。
それで、私が探しているようなことを達成する方法はありますか?
(注: 今のところ、シリアル ストリームを想定しています。しかし、これは、並列処理を機能させる方法を理解すれば、並列処理の恩恵を受けることができる種類の問題だと思います。)
java - ストリームを使用して、HashMap の値をどのようにマッピングできますか?
where Map<String, Person>
Person に(etc) メソッドがある場合、を呼び出して得られるwhereに変えるString getName()
にはどうすればよいですか?Map<String, Person>
Map<String, String>
String
Person::getName()
私が使用するJava 8より前の
しかし、ストリームとラムダを使用してやりたいと思います。
機能的なスタイルでこれを行う方法がわかりません: Map/HashMap don't implement Stream
.
people.entrySet()
ストリーミングできる を返しますが、目的地マップにSet<Entry<String, Person>>
新しい を追加するにはどうすればよいですか?Entry<String, String>
java - Java 8 リファクタリング ラムダ式
ラムダ式を使用して一般的な統計を適用する単純なクラスを作成したいと思います。statistic() メソッドで switch ケースを使用しないようにするにはどうすればよいでしょうか?
たとえば、リストの分散などを計算するために新しいラムダを書きたいと思うかもしれません。
ありがとうございました。
このような方法を考えています