![](/img/trans.png)
[英]Scala regex: Inconsistency between findAll and match ... case
[英]Is there a findall in Scala maps?
在Scala Map中,如何获取Map中具有相同值的所有键?
例如,在我的Map中,我有3个键,其值为27
例如:
large -> 27
indispensable -> 27
most -> 27
我试过了
val adj1value = htAdjId.find(_._2 == value1).getOrElse(default)._1
但这只给了我第一个键“大”(就像find的定义一样 )。 我搜索了很多,但我找不到“findall”功能。 它是否存在于Scala中? 如果没有,有人可以请教我如何解决这个问题?
您可以使用keys
过滤集合并提取所有keys
:
val map = Map("h" -> 27, "b" -> 2, "c" -> 27)
map.filter { case (key, value) => value == 27 }.keys
产量
res0: Iterable[String] = Set(h, c)
虽然我认为如果你需要每次都迭代整个Map
,也许它不是正确的数据结构,也许List[(String, Int)]
就足够了,并且可以节省因使用a而产生的开销。 Map
。
您可以将地图视为Iterable [K,V]然后groupBy这样的值。
@ Map(
"large" -> 27,
"indispensable" -> 27,
"most" -> 27
).groupBy(_._2).mapValues(_.keys)
res4: Map[Int, Iterable[String]] = Map(27 -> Set(
"large",
"indispensable",
"most"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.