問題タブ [collectors]
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.
list - Java 8 - 新しいコレクションを蓄積して作成する
Java 8 を使用して、リストから新しいコレクションを作成し、途中で合計を累積したいと考えています。
ソース リストは、次のようなオブジェクトで構成されます。
次のようなリストの例を使用します。
結果のリストは次のようになります
- desc1、10.0、10.0
- desc2、14.0、24.0
- desc3、5.0、29.0
最終的な合計 (この場合は 29.0) を得るために合計する方法は知っていますが、結果リストを作成し、同時に合計を途中で累積したいと考えています。
Java8でこれを行うにはどうすればよいですか?
java - 要素に沿ってリストをサブリストに分割する
私はこのリストを持っています ( List<String>
):
そして、私はこのようなものが欲しいです:
null
つまり、リストのリスト ( ) を取得するために、値をセパレーターとして使用して、リストをサブリストに分割したいと考えていますList<List<String>>
。Java 8 ソリューションを探しています。試してみましCollectors.partitioningBy
たが、探しているものかどうかわかりません。ありがとう!
arrays - 配列内の Java 8 頻度オブジェクト
を持っていますObject[] array
値には配列内のキー オブジェクトの頻度が含まれるMap<Obejct, Integer>
mapを作成する必要があります。Integer
を使用してJava 8スタイルで行うにはどうすればよいCollectors
ですか?
java - Map の値を収集する Java 8 Streams の Streams を使用したハッシュマップ
ハッシュマップを考えてみましょう
両方のハッシュマップにいくつかの値を挿入しました。
例えば、
Q1) ハッシュマップのキーにフィルタ条件を適用し、対応する値(リスト)を取得したい。
例: ここで私のクエリは key=1 で、出力は 'list1' である必要があります
私が書いた
しかし、このストリーム操作の出力としてリストとして取得する方法がわかりません。
Q2) 再度、ハッシュマップのキーにフィルター条件を適用し、対応するリストのリストを取得したいと考えています。
例: ここで、私のクエリは key=1% (つまり、キーは 1,10,15 のいずれか) で、出力は 'list1','list2','list3'(リストのリスト) になります。
lambda - コレクターに独自のフィニッシャーを実装する方法は?
ようこそ!
ID機能のように自明ではない独自のフィニッシャーを実装する方法を考えています。私のコレクターのヘッダーは
List<Pair<T, Double>>
内部には、に変換する必要があるフィニッシャー メソッドがあります。List<T>
これは仕事をします
java - ストリーム地図へ
私はStream<String>
ファイルの を持っています。今、等しい単語を に結合したいと思いMap<String, Integer>
ますStream<String>
。
を使用する必要があることはわかっていcollect(Collectors.groupingBy(..))
ますが、使用方法がわかりません。
この問題を解決する方法のヒントを提供できる人がいれば、とてもうれしいです!
maven - Streams と Maven を使用する場合のコンパイル エラー
コードをMavenでコンパイルしようとすると、奇妙なコンパイル エラーが発生します。コードはEclipse 内で動作し、Java 8を使用Files.lines
してファイルを読み取ります。
コードは次のとおりです。
collect()
メソッドを使用している場所。
誰でもこのエラーを解決するのを手伝ってもらえますか?
java - ストリームを並列に回すときのコレクターの使用方法
私は実際にこの質問に答えようとしました。Files.lines から取得した Stream<String> の行をスキップする方法 したがって、このコレクターは並行してうまく機能しないと思いました:
しかし、それは機能します。
編集:実際には機能しませんでした。入力セットが小さすぎて並列処理をトリガーできないという事実にだまされました。コメントの議論を参照してください。
次の2つの処刑案が頭に浮かんだので、うまくいかないと思いました。
1.counter
配列はすべてのスレッド間で共有されます。
スレッド t1 が Stream の最初の要素を読み取るため、if 条件が満たされます。リストに最初の要素を追加します。その後、配列値を更新する前に実行が停止します。
ストリームの 4 番目の要素で開始したと言うスレッド t2 は、それをリストに追加します。したがって、不要な要素になってしまいます。
もちろん、このコレクターは機能しているように見えるので、そのようには機能しないと思います。とにかく、更新はアトミックではありません。
2. 各スレッドには、配列の独自のコピーがあります
この場合、更新にこれ以上の問題はありませんが、スレッド t2 がストリームの 4 番目の要素で開始されないことを妨げるものは何もありません。だから彼もそのようには働きません。
それで、それはまったく機能しないようです.それは私に質問をもたらします.コレクターはどのように並行して使用されますか?
誰かが基本的にどのように機能するのか、また並行して実行したときにコレクターが機能する理由を説明できますか?
どうもありがとうございました!