[解決済み] scalaでinverse sortするのに最適な方法は?
質問
scalaで逆ソートをするのに最適な方法は何ですか? 以下はやや遅いのではないかと想像しています。
list.sortBy(_.size).reverse
sortBy を使って逆順に並べ替える便利な方法はないでしょうか? 私はむしろ
sortWith
.
解決方法は?
数値でソートする場合、符号を変更する方法があります。
list.sortBy(- _.size)
より一般的には、ソートは暗黙の秩序を持つメソッド sorted で行われるかもしれませんが、これは明示的にすることもできますし、秩序は逆を持ちます (下記のリストの逆ではありません) を行うことができます。
list.sorted(theOrdering.reverse)
反転させたい順序が暗黙の順序であれば、implicitly[Ordering[A]]で取得することができます。(Aは順序付けしている型) または better Ordering[A] です。ということになります。
list.sorted(Ordering[TheType].reverse)
sortBy は Ordering.by を使っているようなものなので
list.sorted(Ordering.by(_.size).reverse)
多分、(マイナスに比べて)最短で書くことはできないが、意図は明確である。
更新情報
最後の行がうまくいきません。を受け入れるには
_
で
Ordering.by(_.size)
をタイプするために、コンパイラはどのタイプで注文しているかを知る必要があります。
_
. それはリストの要素の型であるように思えますが、そうではありません。
def sorted[B >: A](ordering: Ordering[B])
. 順序は
A
の任意の祖先にも適用されます。
A
(を使用することができます。
byHashCode : Ordering[Any] = Ordering.by(_.hashCode)
). そして実際、listが共変であることから、この署名が強制されます。
次のようなことができる。
list.sorted(Ordering.by((_: TheType).size).reverse)
が、これはもっと気持ち悪い。
関連
-
[解決済み] SparkはYarnクラスタ上で動作しています exitCode=13:
-
[解決済み] Scalaでファイル全体を読む?
-
[解決済み】Scala 2.8のコレクション・ライブラリは「歴史上最も長い遺書」のケースか?[クローズド] Scala
-
[解決済み】Scalaの記号演算子にはどんな意味があるの?
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】タイプセーフのenum型をモデル化する方法は?
-
[解決済み】Scalaでリスト内のアイテムを取得する?
-
[解決済み] 型の論理和(ユニオン型)はどのように定義するのですか?
-
[解決済み] 2つのマップをマージし、同じキーの値を合計するための最良の方法?
-
[解決済み] Scalaは、コレクションをMap-by-keyに変換する最良の方法ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] expr() での lit() の使用について
-
[解決済み] sbtのlibraryDependenciesで言うところの++=と+=の違いは何ですか?
-
[解決済み】Scalaのvarとvalの定義の違いは何ですか?
-
[解決済み】ScalaのCaseオブジェクトとEnumerationsの比較
-
[解決済み】タスクがシリアライズされない:オブジェクトではなくクラスに対してのみクロージャの外で関数を呼び出すとjava.io.NotSerializableExceptionが発生する
-
[解決済み】case objectとobjectの違いについて
-
[解決済み】関数を定義する "def "と "val "の違いとは?
-
[解決済み】Scalaでケースクラスのインスタンスをクローンして、1つのフィールドだけを変更するにはどうすればよいですか?
-
[解決済み】Akka Kill vs. Stop vs. Poison Pill?
-
[解決済み] Scalaで環境変数を読み込む方法