問題タブ [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.
java - Java 8 - 単語数を数え、降順で並べ替える
私は言葉のリストを持っています。
リストで複数回繰り返される上位 7 つの単語を降順で取得するにはどうすればよいですか? そして、単一のエントリの単語をアルファベット順に並べる必要があります。したがって、上記の出力は上位 7 語になります。
ストリーム、ラムダを使用してJava 8でこれを行うことを検討しています。
私はこのように努力しています。最初にリストを並べ替えます。次に、単語のリスト内の単語数を使用して単語のマップを取得します。
java - Collectors#toList のランタイムの複雑さ
Java ライブラリのソース コードでは、Collectors#toList
メソッドは次のように定義されています。
BinaryOperator
のコンストラクターの3 番目のパラメーターとしてCollectorImpl
、線形時間で 2 つのサブ結果をマージします。
この関数をメソッドで頻繁に使用する場合、Stream#collect
2 乗の計算時間を得ることができるということですか?
次のコードを検討してください。
2 番目のストリームの要素はたまたま降順で計算されました。collect メソッドでできる最も簡単な方法は、各数値をラップしてList
次のすべての数値を追加することです。合計で 2 乗の複雑さがあります。悲しいことです。
java - ストリーム groupingBy: リストの最初の要素に減らす
私はList<Valuta>
(簡略化された)JSONスタイルで表現できる を持っています:
[ { コード = ユーロ、説明 = ユーロ、比率 = 1 }、{ コード = 米ドル、説明 = ドル、比率 = 1.1 } ]
私はそれを次のように変換したいMap<String, Valuta>
:
{ EUR={ codice=EUR, description=ユーロ, ratio=1 }, USD={ codice=USD, description=ドル, ratio=1.1 }}
私はこのワンライナーを書きました:
Map<String, List<Valuta>>
しかし、これは必要なものの代わりにa を返します。
関数は私にとってはうまくいくと思いmapping()
ますが、方法がわかりません。
java - Java Streams: 内部マップ キーでグループ化された値を取得します
Java Streams を使用して取得したいMap<A, Map<B, C>>
と考えています。Map<B, List<C>>
私は次のようにそれをしようとします:
私が期待するもの:
flatMap
Stream
を与えるMap.Entry<B, C>
collect(Collectors.groupingBy(...))
Map.Entry<B, C>
に適用されてを返す関数を受け取りB
、 の値を収集しC
ますList<C>
。
しかし、文字通りコンパイルされません。
非静的メソッドは静的コンテキストから参照できません
Map.Entry::getKey
最後の行で。
誰かが何が間違っているか、または私が望むものを達成するための正しい方法を説明できますか?