問題タブ [streamex]
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 - StreamEx を「Plain Old Java Stream」にアンラップする方法は?
StreamEx は強力なライブラリですが、ある時点でその超能力は必要なくなりました。
StreamEx の内部オーバーヘッドを取り除くにはどうすればよいですか? これは問題を引き起こす可能性がありますか?
元。
java - メソッドを Java 8 ストリームに追加する
Java 8 Streamを使用しているときに、Streamに必要な特定のメソッド (たとえば、 takeWhile()、dropWhile()などskipLast()
) がないことに気付くことがあります。Java 8 Streamアーキテクチャ全体を書き直さずに、追加のメソッドを持つ独自のストリーム クラスを作成するにはどうすればよいですか?
私はStreamExライブラリを認識しており、 takeWhile()とdropWhile( ) があることを知っています。これを書いている時点では、ありませんskipLast()
。このメソッドの問題を提出しました。
java - ストリームの groupingBy 値
groupingBy
結果の Map エントリ/値をストリーミングするための非端末バージョンまたはその他の適切な方法はありますか?
私は後で値をストリーミングしたいと思っていますgroupingBy
が、私が思いつくことができる最高のものはきれいではありません:
java - streamex でマップ ストリームの double 値を合計するにはどうすればよいですか?
StreamEx ライブラリは、Java 8 ストリームを簡潔に記述するのに本当に役立つようです。特に、マップを検討する場合 (mapKeyValue
たとえば、マップ エントリを手動でアンボックスする代わりに を使用します)。
マップにエントリのストリームがある場合、バニラ Java 8 では次のように値を合計できます。
StreamExでもこれを行うことができますが、StreamExでそれを行うより良い方法を期待していましたが、私が思いつく最善の方法は次のとおりです。
これは良くありません。
私が行方不明になっているより良い方法はありますか?
java - StreamEx.parallel().forEach() が .map() の後で並列実行されない
StreamEx lib を使用して、以下のようにカスタム ForkJoinPool でストリームを並列化すると、後続のアクションはそのプールから並列スレッドで実行されることに気付きました。ただし、map() 操作を追加して結果のストリームを並列処理すると、プールからのスレッドが 1 つだけ使用されます。
以下は、この問題を示す最小限の作業例の完全なコード (すべてのインポートを除く) です。executeAsParallelFromList() メソッドと executeAsParallelAfterMap() メソッドの唯一の違いは、 .parallel() の前に .map(...) 呼び出しが追加されていることです。
両方の方法を実行する単体テスト:
実行結果:
ご覧のとおり、executeAsParallelFromList() の実行時には 3 つのスレッドすべてが使用されていますが、executeAsParallelAfterMap() の実行時には 1 つのスレッドしか使用されていません。
なんで?
ありがとう!
マリーナ
注: この例は意図的に単純化されています。問題を説明するために、できるだけ最小限にしようとしました。明らかに実際には、 map() 、 handleItem() などでさらに多くのことが行われており、入力データはさらに興味深いものです (AWS S3 バケット/プレフィックスを並行して処理しようとしています)。
java - AbstractStreamEx.nonNull() の Eclipse 外部 Null アノテーション
次のコード例を検討してください。このコードは、Eclipse@NonNull
と@Nullable
アノテーションを使用してnull
s をチェックします。残念ながら、Eclipse は次の行にエラーのフラグを立てますmap(toNonNull)
。
エラーメッセージは次のとおりです。
Null 型の不一致 (型注釈): 'Function' が必要ですが、この式の型は 'Function<@NonNull Integer, @NonNull Integer>' です
StreamExnonNull()
(またはより正確にはAbstractStreamEx )に Eclipse 外部アノテーションを作成して、ストリーム内のnonNull()
値を null にすることはできないことを Eclipse が認識できるようにしたいと考えています。
これが Eclipse 外部注釈の始まりです。
何を入れ???
ますか?
java - SimpleEntry と StreamEx でマップを作成する
私はStreamExの例を見ました。これは非常に素晴らしく、次のようになります
これはうまく機能し、私の出力は{seconds=1, minutes=1}
問題ありません。後で数値を変換する必要がある完全な原因ではありません。
私は最適化しようとしましたSimpleEntry<String,Integer>
:
これはコンパイルされますが、問題が発生しました。一部の値がマップに複数回配置され、Exception in thread "main" java.lang.IllegalStateException: Duplicate key minutes
どうすればこれを修正できますか?
編集
愚かな間違い: 2 番目の例で s1 と s2 を切り替えるのを忘れていました