Scala集合 - 使用自定义函数进行分区

时间:2014-04-25 02:19:08

标签: scala

Scala标准库中是否有任何函数用于集合,对于类型T的集合,是否会返回T类型集合的集合?

所有集合应该具有最多给定数量的“元素”,诀窍是,T的不同实例可以具有不同的“大小”(这就是为什么需要自定义函数,以返回“大小” “T)。

1 个答案:

答案 0 :(得分:0)

我认为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