我正在通过Twitter的
Scala学校阅读,并正在查看groupBy和分区方法的集合.而且我不确定这两种方法之间的区别是什么.
我自己做了一些测试:
scala> List(1,2,3,4,5,6).partition(_ % 2 == 0) res8: (List[Int],List[Int]) = (List(2,6),List(1,5)) scala> List(1,6).groupBy(_ % 2 == 0) res9: scala.collection.immutable.Map[Boolean,List[Int]] = Map(false -> List(1,5),true -> List(2,6))
那么这是否意味着分区返回两个列表的列表,而groupBy返回一个带有布尔键和列表值的Map?两者都具有基于条件将列表分成两个不同部分的相同“效果”.我不知道为什么我会用一个而不是另一个.那么,我什么时候使用分区而不是groupBy,反之亦然?
解决方法
groupBy更适合更复杂对象的列表.
说,你有一节课:
case class Beer(name: String,cityOfBrewery: String)
和啤酒清单:
val beers = List(Beer("Bitburger","Bitburg"),Beer("Frueh","Cologne") ...)
然后你可以通过cityOfBrewery分组啤酒:
val beersByCity = beers.groupBy(_.cityOfBrewery)
现在,您可以获得自己在数据中所有城市酿造的所有啤酒的列表:
val beersByCity("Cologne") = List(Beer("Frueh","Cologne"),...)
整洁,不是吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。