2012-03-17 24 views
17

私はタイプAのオブジェクトのリストを持っています。最初の反復では、各オブジェクトにdouble値0 < x < 1を割り当ててから、各オブジェクトをx値に従ってソートします。オブジェクトのリストをソートする最も簡単な方法

現在、オブジェクトを格納するラッパークラスを使用しています。これは、比較可能なリストを作成するためのx値です。

var result = new SortedList[Double, A] 
result.insert(x,a) 
result.insert(x1,a1) 
result.insert(x2,a2) 

、その後

println(result.mkString) 

答えて

31

あなたが実際に通常のスカラ座で非常に簡単にこれを行うことができます一覧表示し、そのsortBy方法:

は私のようなものを可能にスカラ座が提供するデータ型があります。

scala> class A(val value: Double) { override def toString = "A:" + value } 
defined class A 

scala> List(new A(6), new A(1), new A(3)) sortBy (_.value) 
res0: List[A] = List(A:1.0, A:3.0, A:6.0) 
11

新しいラッパークラスを作成する代わりに、タプルを使用してください。

List((1.2, "a1"), (0.1, "a2"), (0.9, "a3")).sorted 
// List((0.1,a2), (0.9,a3), (1.2,a1)) 
+2

タプルについての素敵なことは、最初の部分で最初にソートされ、その後の部分でつながれることです! – schmmd

3

私はこのようになります。ハッシュマップでトップCの単語を取得する場合:

def getTopCWordsDeclarative(input: mutable.HashMap[String, Int], c: Int): Map[String, Int] = { 
    val sortedInput = input.toList.sortWith(_._2 > _._2) 
    sortedInput.take(c).toMap 
    } 
関連する問題