問題タブ [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 parallelStream() と sorted()
JDK 8 EA がリリースされました。ラムダと新しい Stream API に慣れようとしています。並列ストリームでリストをソートしようとしましたが、結果は常に間違っています:
出力:
毎回出力が異なることに注意してください。私の質問は、それはバグですか?または、リストを並行してソートすることはできませんか? もしそうなら、なぜJavaDocはそれを述べていないのですか? 最後の質問ですが、ストリームの種類によって出力が異なる別の操作はありますか?
java - Java 8 ストリーム、表と裏を取得
Java 8 では、 Scala のStreamに似たStreamクラスが導入されました。これは、次のようなことを非常に簡潔に行うことができる強力な遅延構造です。
Java 8でこれを行うことができるかどうか疑問に思ったので、次のように書きました。
かなり単純ですが、 とのjava.lang.IllegalStateException: stream has already been operated upon or closed
両方が一度しか実行できない端末操作であるため、生成されます。findFirst()
skip()
Stream
ストリームを 2 回使い切る必要はありません。必要なのは、ストリームの最初の数値と、残りを別のストリームとして (つまり、Scala のStream.head
とに相当する) だけだからStream.tail
です。Stream
これを達成するために使用できるJava 8 のメソッドはありますか?
ありがとう。
java - ストリームを 2 つのストリームに分割できますか?
Java 8 ストリームで表されるデータセットがあります。
それをフィルタリングしてランダムなサブセットを取得する方法を確認できます-たとえば
また、このストリームを縮小して、たとえば、データ セットの 2 つのランダムな半分を表す 2 つのリストを取得し、それらをストリームに戻す方法もわかります。しかし、最初のストリームから 2 つのストリームを生成する直接的な方法はありますか? 何かのようなもの
洞察をありがとう。
java - 入力ストリームから制限された長さを読み取るためのベスト プラクティス
長さヘッダーが前にあるソケットを介して送信されるパケットがあります。したがって、すべての送信には、4 バイトの長さ情報の後にパケットが続きます。したがって、read()
行内の次のパケットを誤って読み取らないように、長さを決して超えないように制限する必要があります。
InputStream in
は入力ストリーム、ByteArrayOutputStream byteStream
は着信パケットを書き込むストリーム、 はint len
着信伝送の長さです。
これが私が思いついたものです:
これはまったく恐ろしいことです。バイトを 1 つずつ読み取ります。バッファを使用してこれを行うより良い方法があるかどうかを確認したいと思っていました(ストリームをコピーする標準的な方法に似ています)。
java - ストリームはなぜIterable を実装しない?
Java 8 にはクラスStream<T>があり、不思議なことにメソッドがあります
したがって、まさにこのメソッドを必要とするインターフェイスIterable<T>を実装することを期待するでしょうが、そうではありません。
foreach ループを使用して Stream を反復処理する場合は、次のようにする必要があります
ここで何か不足していますか?
java - `IntStream` を `String` として出力する最も簡単な方法
Java-8 では、またはメソッドを使用して、 String
(または任意のCharSequence
) を として簡単に扱うことができます。IntStream
chars
codePoints
その後、ストリームの内容を操作できます
結果をきちんと印刷する方法を探していましたが、簡単な方法さえ見つけられませんでした。int
このs のストリームを、 String
.
以上stars
より印刷希望
java - Iterable で Stream 関数を実行するには?
Java 8 では、Stream
クラスに an をラップするメソッドがありませんIterable
。
代わりに、Spliterator
から を取得してから、次のように から を取得していますIterable
。Stream
StreamSupport
不足しているStream
操作を生成する他の方法はありますか?Iterable
java - try-with-resources が BufferedReader from lines() を閉じないようにする方法 (ストリーム)?
これは、 a で終了したBufferedReader
ときに a が閉じられないようにするために私が行っていることです:lines()
try-with-resources
これは一般的なユーティリティであり、ファイルだけでなく、多くのリーダーで動作します..
Stream<String>
を閉じても も閉じないように制御するより良い方法はありBufferedreader
ますか?
以下のコメントに従って通常の を試すと、次のようtry
になります。
それはより良いようです:)