我有一个类似于List(List(0, 2), List(0, 3), List(2, 3), List(3, 2), List(3, 0), List(2, 0)))
的列表,请注意此列表只包含对,不包含重复对。我想按照这个更大的列表中每个子列表中的第二项按降序对列表进行排序。如果有重复的值,我真的不是第一个。
对于此实例,答案可能类似于List(List(0,3), List(2,3), List(0,2), List(3,2), List(3,0), List(2,0))
我的想法是循环浏览较大的列表并获得一个列表,其中包含每对中的每个第二项并对其进行排序,但我无法跟踪每对中哪个第二项属于哪一对后来。也许还有一种更聪明的方式?
答案 0 :(得分:4)
一个简单的解决方案是:
list.sortBy(-_.last)
答案 1 :(得分:3)
您可以这样做:
Far
答案 2 :(得分:2)
如果列表总是长度为2,我会使用元组而不是列表。那么这只是使用sortBy
scala> val l1 = List(List(0, 2), List(0, 3), List(2, 3), List(3, 2), List(3, 0), List(2, 0))
l1: List[List[Int]] = List(List(0, 2), List(0, 3), List(2, 3), List(3, 2), List(3, 0), List(2, 0))
scala> val l2 = l1.map(x => (x(0), x(1)))
l2: List[(Int, Int)] = List((0,2), (0,3), (2,3), (3,2), (3,0), (2,0))
scala> l2.sortBy(-_._2)
res1: List[(Int, Int)] = List((0,3), (2,3), (0,2), (3,2), (3,0), (2,0))
答案 3 :(得分:0)
list.sortBy( sublist => -1 * sublist.tail.head )