1
class P(val a: Int, val b: Int)
val listp = List[P](new P(2,1))
listp.sortWith( (p1, p2) => p1.b < p2.b )
listp.sortBy(p => (p.b))

listp並べ替えが簡単です

val list = List((2, 1))
list.sortWith( (a1, b1), (a2, b2) => b1 < b2)   // Too many arguements
list.sortWith( ((a1, b1), (a2, b2)) => b1 < b2) // Not a legal formal parameter / <error> is already defined as <error>
list.sortBy((a, b) => (b))                      // wrong number of parameters expected

並べ替えの方法を教えてくださいlist。list のメソッド呼び出しはすべてコンパイル エラーになります (戻り値を無視していることはわかっていますが、構文だけを気にしています)。

無名関数の構文を探しているだけです。JavaOrderedのようにサブクラス化できることは知っています。Comparable

編集- これで完了です。すべての回答に感謝します:

list.sortWith( _._2 < _._2)
list.sortBy(_._2)
list.sortWith( (t1, t2) => t1._2 < t2._2 )

これは明示的に

list.sortWith( (t1: Tuple2[Int, Int], t2: Tuple2[Int, Int]) => t1._2 < t2._2 )
4

3 に答える 3

9

与えられた

val list = List((2,1), (3,4))

2番目の要素で並べ替える:

list.sortBy(_._2)

または多くの冗長:

list.sortBy { case(a,b) => b }
于 2012-10-17T22:39:37.707 に答える
5

これを試して:

scala> val list = List((2, 1),(5,-10))
list: List[(Int, Int)] = List((2,1), (5,-10))

scala> list.sortWith{ case ((a1, b1), (a2, b2)) => b1 < b2}
res1: List[(Int, Int)] = List((5,-10), (2,1))
于 2012-10-17T22:34:39.833 に答える
1
val list = List((2,1), (3,4))

list.sort(_._1 < _._2)

res0: List[(Int, Int)] = List((2,1), (3,4))
于 2012-10-17T22:36:33.967 に答える