繁体   English   中英

Scala集合-具有自定义功能的分区

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM