1. ホーム
  2. sorting

[解決済み] Scalaで配列を並べ替えるには?

2022-02-27 18:03:15

質問

ソートオブジェクトがあるのがわかる。 Sorting を持つ クイックソート メソッドを使用します。 quickSort を、その上に置く。

任意の型のオブジェクトの配列をソートする、それを使うコード例はどのようなものでしょうか?の実装を渡す必要があるようです。 Orderable trait がありますが、構文がよくわかりません。

また、私はこれを'Scalaの方法'で行う答えを希望します。私はJavaライブラリを使用することができます知っている。

どのように解決するのですか?

Sorting.quickSortは数値や文字列の配列を受け取る関数を宣言していますが、あなたが言いたいのは、独自のクラスのオブジェクトのリストをソートしたいということでしょうか。

あなたが見ていると思われる関数は

quickSort [K](a : Array[K])(implicit view$1 : (K) => Ordered[K]) : Unit

ということは、配列の中のオブジェクトには、必ず Ordered という形質があります。ですから、あなたのクラスは Ordered を実装する必要があります (あるいは混ぜる必要があります)。 compare というメソッドがあります。

そこで、本から例を引きますと。

class MyClass(n: Int) extends Ordered[MyClass] {
   ...
  def compare(that: MyClass) =
    this.n - that.n
}

つまり、Array[MyClass]が与えられたら、Sorting.quickSortは動作するはずです。