我想按Scala中的第一列对列表进行排序。
我有一个这样的列表清单:
val a0 = List(0, "a0", 23)
val a1 = List(1, "a1", 231)
val a2 = List(2, "a2", 1)
val a3 = List(3, "a3", 80)
val a4 = List(4, "a4", 33)
val a5 = List(5, "a5", 23)
val a6 = List(6, "a6", 2)
val list1 = List(a0, a6, a2, a3, a1, a5, a4)
我想按第一列对其进行排序,因此预期输出为:
List(
List(0, a0, 23),
List(1, a1, 231),
List(2, a2, 1),
List(3, a3, 80),
List(4, a4, 33),
List(5, a5, 23),
List(6, a6, 2)
)
我尝试了
list1.sortBy(list => list(0))
但是会产生
错误:没有为Any定义任何隐式排序
我该怎么办?
答案 0 :(得分:2)
这又是您的输入内容:
val a0 = List(0, "a0", 23)
val a1 = List(1, "a1", 231)
val a2 = List(2, "a2", 1)
val a3 = List(3, "a3", 80)
val a4 = List(4, "a4", 33)
val a5 = List(5, "a5", 23)
val a6 = List(6, "a6", 2)
val list1 = List(a0, a6, a2, a3, a1, a5, a4)
这是您的排序方式:
val list2 = list1.sortBy(_(0).asInstanceOf[Int])
(0)
获得第一个条目,asInstanceOf[Int]
将其强制转换为整数。 _
是列表的占位符,它是(list: List[Any]) => list(0).asInstanceOf[Int]
的缩写。
如果您打印结果
list2 foreach println
你得到
List(0, a0, 23)
List(1, a1, 231)
List(2, a2, 1)
List(3, a3, 80)
List(4, a4, 33)
List(5, a5, 23)
List(6, a6, 2)