[英]Scala collections - partition with custom function
是否有任何功能Scala
对集合标准库,该类型的集合T
会返回一个类型的集合的集合T
?
所有集合最多应具有给定数量的“元素”,诀窍是, T
不同实例可以具有不同的“大小”(这就是为什么需要自定义函数才能返回T
的“大小”)的原因。
我认为groupBy
可以解决问题:
trait Sized {
def size: Int
}
case class Foo(x: String) extends Sized {
def size = x.length
}
case class Bar(x: Int) extends Sized {
def size = x * 2
}
val list = List(Foo("a"), Foo("b"), Foo("aa"), Foo("bb"),
Bar(0), Bar(1), Bar(2))
val grouped: Map[Int,List[Sized]] = list groupBy { _.size }
如果您不关心大小,而只想要一个集合的集合,请使用grouped.values
:
val groups: Iterable[List[Sized]] = grouped.values
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.