問題タブ [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.util.stream.Stream からリストを取得する
コレクションを簡単にフィルタリングするために、Java 8ラムダをいじっていました。しかし、結果を同じステートメント内の新しいリストとして取得する簡潔な方法が見つかりませんでした。これまでの私の最も簡潔なアプローチは次のとおりです。
ネット上の例は、新しい結果リストを生成せずに停止するため、私の質問に答えませんでした。もっと簡潔な方法があるはずです。クラスには、 、 … のStream
ようなメソッドがあると予想していました</p>
toList()
toSet()
変数targetLongList
を 3 行目で直接代入する方法はありますか?
java - Java 8 Iterable.forEach() と foreach ループ
次のうち、Java 8 でより適切な方法はどれですか?
Java 8:
Java7:
ラムダで「簡略化」できる for ループがたくさんありますが、それらを使用する利点は本当にありますか? パフォーマンスと可読性が向上しますか?
編集
また、この質問をより長い方法に拡張します。ラムダから親関数を返したり壊したりできないことは知っています。これらを比較する際には、これも考慮に入れる必要がありますが、他に考慮すべきことはありますか?
java - Java 8 java.util.stream.Streams
多くのブログ投稿で Streams クラスについて言及しているのを目にしますが、これはかつてラムダ ブランチ API の一部であったことがわかります。現在は非公開 API のようで、以前の実装とは一致しません。Streams.concat()
ストリームに複数の値を追加する、または追加する別の方法はありますか?
java - null 値の jdk8 ストリームをどのように管理する必要がありますか
in advance
JDK8 はまだリリースされていないため (とにかく今のところはそうではありません..)、この件名は少し難しいかもしれませんが、Lambda 式に関するいくつかの記事、特に Stream として知られる新しいコレクション API に関連する部分を読んでいました。
以下は、Java Magazine の記事に記載されている例です (これはカワウソ個体群アルゴリズムです..):
私の質問は、セットの内部反復の途中で、カワウソの 1 つが null の場合はどうなるかということです。
NullPointerException がスローされることを期待しますが、以前の開発パラダイム (非機能) にまだとどまっている可能性があります。
これが実際に NullPointerException をスローする場合、この機能は非常に危険であることがわかり、以下のようにのみ使用する必要があります。
- null 値がないことを確認する開発者 (おそらく以前の .filter(o -> o != null) を使用)
- 開発者は、アプリケーションが null otter または処理する特別な NullOtter オブジェクトを生成しないようにします。
最良の選択肢、または他の選択肢は何ですか?
foreach - 古い対新しい foreach ループ
どのような場合に、JDK 8foreach
の新しいループよりも古いループを使用する必要がありますか?それとも、すべてのループcollection.forEach()
を変換するのがベスト プラクティスですか? 重要なパフォーマンスの違いはありますか? foreach
私が考えることができる唯一のケースは、配列を反復処理したいが、最初に配列をリストに変換したくない場合です。
lambda - JDK8 とラムダを使用してストリームを圧縮する (java.util.stream.Streams.zip)
ラムダ b93 を使用する JDK 8 には、ストリームを圧縮するために使用できるクラスjava.util.stream.Streams.zip が b93にありました (これは、Dhananjay Nene によるチュートリアル Java8 Lambda の探索。パート 1で説明されています)。この機能:
要素が 2 つのストリームの要素を結合した結果である、遅延したシーケンシャル結合ストリームを作成します。
ただし、b98 ではこれがなくなりました。実際、このStreams
クラスはb98 の java.util.streamでもアクセスできません。
この機能は移動されましたか? その場合、b98 を使用してストリームを簡潔に圧縮するにはどうすればよいですか?
私が念頭に置いているアプリケーションは、この Java 実装の Shenにあります。ここで、zip 機能を置き換えました
static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
かなり冗長なコードの関数 (b98 の機能を使用しない)。
java - Java 8でインデックスを使用してストリームを反復処理する簡潔な方法はありますか?
ストリーム内のインデックスにアクセスしながら、ストリームを反復処理する簡潔な方法はありますか?
そこに与えられたLINQの例と比較して、かなりがっかりしているようです
もっと簡潔な方法はありますか?
さらに、ジッパーが移動または削除されたようです...
java - Collectors.toMap() keyMapper -- より簡潔な表現?
Collectors.toMap()
次の呼び出しで、「keyMapper」関数パラメーターのより簡潔な式を考え出そうとしています。
ラムダ式を使用してインライン化できるはずですが、コンパイルできるものを思いつきません。(私はラムダにまったく慣れていないので、それほど驚くことではありません。)
ありがとう。
--> 更新:
受け入れられた回答に記載されているように
私が探していたものであり、私が試したものです。しかし、Eclipse 4.3 の BETA_8 ナイトリー ビルドには問題がありました。コマンドラインからコンパイルすると(投稿する前に実行する必要がありました)、機能しました。それでは、eclipse.org にバグを報告しましょう。
ありがとう。