【问题标题】:groupBy on String in ScalaScala中字符串的groupBy
【发布时间】:2017-12-29 09:47:57
【问题描述】:

我正在对字符串执行 groupBy,如下所示: "message".groupBy("message".count(_.toChar)) 我期待它产生一张地图: {1 => "mag" , 2 => "es"} 但是上面的代码甚至没有编译,我哪里出错了。我想根据字符的鉴别函数计数生成一个映射。

【问题讨论】:

  • 为什么会这样?
  • 因为根据我的有限理解(Scala 新手),groupBy 会先接收 "m" ,然后是 "e" ,依次类推,它会计算每个字符的出现次数。

标签: scala


【解决方案1】:

你可以这样做:

("message".groupBy(identity).mapValues(_.size)
 .groupBy(_._2).mapValues(_.foldLeft("")(_+_._1)))

// res8: scala.collection.immutable.Map[Int,String] = Map(2 -> es, 1 -> amg)

【讨论】:

  • 我读到了一个类似的解决方案,stackoverflow.com/questions/12105130/…,但我不清楚为什么我上面的解决方案不起作用。
  • String.count 需要一个布尔值,对于您的方法,您可以尝试"message".groupBy(c => "message".count(_ == c))
猜你喜欢
  • 2023-02-03
  • 1970-01-01
  • 2017-01-20
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多