Scala 遍历地图以获取val键或val键

Scala 遍历地图以获取val键或val键,scala,Scala,我有一个下面的地图,但我需要一个函数,需要能够返回一个列表与下列数字,如果我们通过“100”,这是一个关键,我们通过arg传递 List(100, 102 , 106 , 107 , 111 , 112) <- example output 您只需迭代,直到用完键值 Iterator.iterate("100")(Database.getOrElse(_,"")).takeWhile(_.nonEmpty).toList 这假设一个空字符串,“,是在映射中找不到的值的良好指示器。如果没

我有一个下面的地图,但我需要一个函数,需要能够返回一个列表与下列数字,如果我们通过“100”,这是一个关键,我们通过arg传递

List(100, 102 , 106 , 107 , 111 , 112) <- example output

您只需迭代,直到用完键值

Iterator.iterate("100")(Database.getOrElse(_,"")).takeWhile(_.nonEmpty).toList
这假设一个空字符串,
,是在
映射中找不到的值的良好指示器。如果没有好的指示符值,则始终可以使用
选项
包装器。更详细一点,但正是
选项
的好处

Iterator.iterate(Option("100"))(opt => Database.get(opt.head))
        .takeWhile(_.nonEmpty) //stop at first None
        .flatten               //remove Option wrappers
        .toList                //List[String] = List(100, 102, 107, 112)

您只需迭代
,直到用完键值

Iterator.iterate("100")(Database.getOrElse(_,"")).takeWhile(_.nonEmpty).toList
这假设一个空字符串,
,是在
映射中找不到的值的良好指示器。如果没有好的指示符值,则始终可以使用
选项
包装器。更详细一点,但正是
选项
的好处

Iterator.iterate(Option("100"))(opt => Database.get(opt.head))
        .takeWhile(_.nonEmpty) //stop at first None
        .flatten               //remove Option wrappers
        .toList                //List[String] = List(100, 102, 107, 112)

您的意思是让val数据库成为Map[String,List[String]]吗?映射中的每个键都与一个值相关联。在提供的val数据库中,Database.get(“100”)生成“102”。e、 g.您是否需要更多地图(“100”,列表(“101”,“102”))首先,您的数据库地图有重复的键,即100,只有最新的将被保存,即“100”->“102”。@RameshMaharjan抱歉,拿走了重复的键out@dedpo无法理解要求,请在表格中多加解释details@dedpo你说的“对于102,值是106”how 106?在数据库中,我们看到了“102”->“107”。您是指val数据库是一个Map[String,List[String]]?Map中的每个键都与一个值关联。在提供的val数据库中,database.get(“100”)产生“102”。例如,您是否希望沿着Map(“100”,List(“101”,“102”)的路线获得更多信息首先,您的数据库映射有重复的密钥,即100,只保存最新的密钥,即“100”->“102”。@RameshMaharjan抱歉,已获取重复密钥out@dedpo无法理解要求,请在表格中多加解释details@dedpo您说过“102的值是106”如何106?在数据库中我们看到“102”->“107”软件工程师的悲惨借口“我认为你太谦虚了,先生!我必须找出这条优雅的单行线的所有捷径谢谢你,是吗。takeWhile(u.nonEmpty)本质上是指执行到映射的末尾?
Iterator.iterate())
可能会创建一个无限集合。
数据库
返回一个非键值后,该非键值将尝试作为索引,而
数据库
将返回
OrElse
值(在第一个示例中)或
值(在第二个示例中)。
takeWhile()
将把一个(潜在的)无限集合变成一个有限集合,方法是在第一个不符合其要求的元素(在本例中为
非空的
)处停下来。“软件工程师的可怜借口”我认为你太谦虚了,先生!我必须找出所有这些通往这个优雅的集合的捷径谢谢你,是的(.nonEmpty)实际上意味着执行到映射的末尾?
Iterator.iterate()
可以潜在地创建一个无限集合。在
数据库
返回一个不是键的值之后,该非键值将尝试作为索引,而
数据库
将返回
OrElse
值(在第一个示例中)或
None
值(在第二个示例中)。
takeWhile()
将通过在不满足其要求的第一个元素处停止(在本例中为
非空
)将(可能)无限集合转换为有限集合。