Scala中基于布尔条件单次转换拆分集合为二元组
用Scala的
partition方法一键拆分集合 嘿,刚好Scala标准库就有个专门干这事的方法——partition!它完全符合你的需求:基于布尔条件把集合拆分成符合条件和不符合条件的两个子集,返回一个(Array[Person], Array[Person])格式的元组,而且只需要一条语句就能实现。
直接上完整代码示例:
case class Person(age: Int) val persons: Array[Person] = Array(Person(15), Person(17), Person(30), Person(35)) // 一行代码完成拆分,这里以年龄>=18作为成年人的判断条件 val (adults, minors) = persons.partition(_.age >= 18)
简单解释下:
partition方法接收一个返回布尔值的函数作为参数,这里用_.age >= 18简写了判断逻辑(等价于p => p.age >= 18)- 方法执行后会返回一个元组,我们用模式匹配直接把元组的两个元素分别赋值给
adults(符合条件的成年人)和minors(不符合条件的未成年人) - 最终
adults会包含Person(30), Person(35),minors会包含Person(15), Person(17)
如果你需要调整判断条件,只需要修改partition里的布尔表达式就行,比如改成_.age > 20来区分不同年龄段的群体,非常灵活。
内容的提问来源于stack exchange,提问作者bp2010
相关产品推荐
相关产品推荐

