gpt4 book ai didi

scala - partition 和 groupBy 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 17:08:39 25 4
gpt4 key购买 nike

我现在正在阅读 Twitter 的 Scala School 并且正在查看 groupBypartition集合的方法。而且我不确定这两种方法之间的区别是什么。

我自己做了一些测试:

scala> List(1, 2, 3, 4, 5, 6).partition(_ % 2 == 0)
res8: (List[Int], List[Int]) = (List(2, 4, 6),List(1, 3, 5))

scala> List(1, 2, 3, 4, 5, 6).groupBy(_ % 2 == 0)
res9: scala.collection.immutable.Map[Boolean,List[Int]] = Map(false -> List(1, 3, 5), true -> List(2, 4, 6))

那么这是否意味着 partition返回两个列表的列表和 groupBy返回一个带有 bool 键和列表值的 Map?两者都具有根据条件将列表分成两个不同部分的相同“效果”。我不知道为什么我会使用一个而不是另一个。那么,我什么时候会使用 partitiongroupBy反之亦然?

最佳答案

groupBy更适合更复杂对象的列表。

说,你有一个类:

case class Beer(name: String, cityOfBrewery: String)

和啤酒 list :
val beers = List(Beer("Bitburger", "Bitburg"), Beer("Frueh", "Cologne") ...)

然后,您可以通过 cityOfBrewery 对啤酒进行分组:
val beersByCity = beers.groupBy(_.cityOfBrewery)

现在,您可以获得数据中任何城市酿造的所有啤酒的列表:
val beersByCity("Cologne") = List(Beer("Frueh", "Cologne"), ...)

整洁,不是吗?

关于scala - partition 和 groupBy 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617850/

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