【问题标题】:Sorting by alphabet List of Lists按字母排序 列表列表
【发布时间】:2021-07-19 06:07:38
【问题描述】:

我有一个练习,我必须将 List 中的重复元素放到单个列表中。一切正常,但我的问题是现在如何按字母顺序排序,所以结果从List(a,a,a,a,a,a) 开始,而不是从List(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))

【问题讨论】:

  • .sortBy(_.head)?
  • 你是对的,它有效,但是如何?你能为我建造它吗?将感激不尽。在这种情况下,head 是什么?
  • 这是每个列表的头部
  • .map{case (key, values) => values} === .values
  • sort by 将函数应用于列表的每个元素,并根据该函数的结果对列表进行排序

标签: scala functional-programming


【解决方案1】:

mck 提出了一个很好的答案。

你也可以在groupBy之后对map进行key排序

l.groupBy(identity).toList.sortBy(_._1).map(_._2)

【讨论】:

    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2016-05-09
    相关资源
    最近更新 更多