scala - 从scala中的 map 获取 key

标签 scala

我的这段代码有问题,编译器告诉我一个错误

for (key <- keys) type mismatch, found: Unit, required: Seq[String] .

我以错误的方式获取 map 键?谢谢

def sorted(): Seq[String] = {
var sorting: Seq[String] = Seq()
var keys = db.keys.toSeq.sortWith(_ < _)
for (key <- keys) {
  var names = db(key).sortWith(_ < _)
  for (name <- names) {
    sorting = sorting :+ name
  }
}

最佳答案

我认为以函数式方式执行此操作可以大大简化此操作:

def sorted(): Seq[String] =
  for{
    key <- db.keys.toSeq.sorted
    value <- db(key).sorted
  } yield value
  1. 获取已排序的 Seq 中的键。

  2. 获取已排序的 Seq 中的值。

for-comprehension 一样,这将 flatMap 这些 Seqs

结果:val db = Map("one"-> Seq("eins", "uno"), "two"-> Seq("zwei", "due"))

是:Vector(eins, uno, due, zwei)

如果您有什么不明白的地方,请告诉我。

关于scala - 从scala中的 map 获取 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57778621/

相关文章:

scala - Slick:使用 Rep[Seq[T]] 进行过滤

scala - 首次使用 SBT - 在代理后面检索依赖项的问题

mongodb - 为什么我的 MongoDB 同时 $push 更新失败?

Scala 协方差和下限我不明白

json - 在 Scala Play 应用程序中获取 “No unapply or unapplySeq function found” 异常

java - p.nettyException - 处理 TooLongFrameException - 玩!框架

斯卡拉。有没有办法选择具有 self 类型的 super 方法实现?

scala - 如何使用 spark scala 以附加模式在单个 JSON 文件下保存多个查询的输出

scala - 如何使用 Scala 中的 Play json 更新列表中的每个字段

scala - 字符串 + StringOps = 仿函数?