gpt4 book ai didi

scala - 过滤 Scala Multimap 并输出为元组列表

转载 作者:行者123 更新时间:2023-12-02 08:47:15 26 4
gpt4 key购买 nike

我有一个使用 multimap 特性的 map ,就像这样
val multiMap = new HashMap[Foo, Set[Bar]] 和 MultiMap[Foo, Bar]
我想结合过滤特定值的 map
multiMap.values.filter(bar => barCondition)
将匹配结果展平为
形式的元组列表val fooBarPairs: List[(Foo, Bar)]
这样做的惯用方式是什么?我希望 Scala 可以提供类似变形的东西来做到这一点而无需循环,但作为一个完全的新手,我不确定我的选择是什么。

最佳答案

这是一个例子:

import collection.mutable.{HashMap, MultiMap, Set}

val mm = new HashMap[String, Set[Int]] with MultiMap[String, Int]
mm.addBinding("One", 1).addBinding("One",11).addBinding("Two",22).
addBinding("Two",222)
// mm.type = Map(Two -> Set(22, 222), One -> Set(1, 11))

我认为获得所需内容的最简单方法是使用 for 表达式:

for {
(str, xs) <- mm.toSeq
x <- xs
if x > 10
} yield (str, x) // = ArrayBuffer((Two,222), (Two,22), (One,11))

您需要 .toSeq 否则输出类型将是 Map,这意味着每个映射都会被后续元素覆盖。如果您特别需要 List,请在此输出上使用 toList

关于scala - 过滤 Scala Multimap 并输出为元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com