gpt4 book ai didi

scala - 在 map 中组合过滤器

转载 作者:行者123 更新时间:2023-12-01 16:14:39 25 4
gpt4 key购买 nike

我有一个列表,我通过调用相应的值计算函数以这种方式将其组合到 map 中。我正在使用 collection.breakout 来避免创建不必要的中间集合,因为我所做的有点组合,保存的每一点迭代都有帮助。

我需要从 map 中过滤掉某些元组,在我的情况下,值小于 0。是否可以将其添加到 map 本身而不是之后执行 filter (因此再次迭代)?

val myMap: Map[Key, Int] = keyList.map(key => key -> computeValue(key))(collection.breakOut)

val myFilteredMap = myMap.filter(_._2 >= 0)

换句话说,我希望理想地一次性获得第二张 map ,因此理想情况下,在第一次调用 map() 时,我会过滤掉不需要的元组。这有可能吗?

最佳答案

您可以使用 foldLeft 轻松地做到这一点:

keyList.foldLeft( Map[Key,Int]() ) {
(map, key) =>
val value = computeValue(key)
if ( value >= 0 ) {
map + (key -> value)
} else {
map
}
}

关于scala - 在 map 中组合过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055682/

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