Scala 按字母表列表排序
我做了一个练习,必须将重复的元素从列表中放到各个列表中。一切正常,但我的问题是现在如何按字母顺序排列,因此结果从Scala 按字母表列表排序,scala,functional-programming,Scala,Functional Programming,我做了一个练习,必须将重复的元素从列表中放到各个列表中。一切正常,但我的问题是现在如何按字母顺序排列,因此结果从列表(a,a,a,a,a,a)开始,而不是从列表(e,e,e,e) 最后尝试使用sortBy,但没有一种组合对我有效 我的代码: val list2 = List('a', 'a', 'a', 'a', 'b', 'c', 'c', 'a', 'a', 'd', 'e', 'e', 'e', 'e') def sortedSublist(l: List[Char]): List[Lis
列表(a,a,a,a,a,a)
开始,而不是从列表(e,e,e,e)
最后尝试使用sortBy
,但没有一种组合对我有效
我的代码:
val list2 = List('a', 'a', 'a', 'a', 'b', 'c', 'c', 'a', 'a', 'd', 'e', 'e', 'e', 'e')
def sortedSublist(l: List[Char]): List[List[Char]] = {
l.groupBy(identity).map{case (key, values) => values}.toList
}
println(sortedSublist(list2))
目前的结果是:
List(List(e, e, e, e), List(a, a, a, a, a, a), List(b), List(c, c), List(d))
麦克提出了一个很好的答案
还可以在groupBy之后按键对地图进行排序
l.groupBy(identity).toList.sortBy(u._1).map(u._2)
.sortBy(u.head)
?你是对的,它可以工作,但如何工作?你能帮我把它建起来吗?我将不胜感激。在这种情况下,head
是什么?这是每个列表的头.map{case(key,values)=>values}
=。values
排序方式将函数应用于列表的每个元素,并根据该函数的结果对列表排序