0
Scala
收藏標準庫中是否有任何功能,對於收集類型T
是否會返回收集T
類型的收藏?斯卡拉收藏 - 具有自定義功能的分區
所有集合應該頂多給「元素」,訣竅就是,T
不同的情況下,可以有不同的「大小」(這就是爲什麼需要自定義函數,返回的T
「大小」的數量)。
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
這是不正是我想要的,在這裏你將有桶(大小,listOfElementsWithGivenSize),我想要得到的東西,如:表(表(A,b,C),表(d,e)項),其中a.size + b.size + c.size <= givenValue。 – Andna
scala> val groupped = list.groupBy(_。size).values 分組:Iterable [List [帶序列化大小的產品]] = MapLike(List(Foo(aa),Foo(bb),Bar(1)) ,列表(Bar(2)),List(Foo(a),Foo(b)),List(Bar(0)) –