我有一些Set[String]
和一个数字devider: Int
。我需要将集合任意划分,每个片断的大小为devider
。例子:
1。
Set: "a", "bc", "ds", "fee", "s"
devider: 2
result:
Set1: "a", "bc"
Set2: "ds", "fee"
Set3: "s"
2。
Set: "a", "bc", "ds", "fee", "s", "ff"
devider: 3
result:
Set1: "a", "bc", "ds"
Set2: "fee", "s", "ff"
3。
Set: "a", "bc", "ds"
devider: 4
result:
Set1: "a", "bc", "ds"
用
Scala
的惯用方式是什么? 最佳答案
您可能想要类似的东西:
Set("a", "bc", "ds", "fee", "s").grouped(2).toSet
问题在于,按照定义,
Set
没有顺序,因此无法确定将哪些元素组合在一起。Set( "a", "bc", "ds", "fee", "s").grouped(2).toSet
//res0: Set[Set[String]] = Set(Set(s, bc), Set(a, ds), Set(fee))
要以特定方式将它们分组,您需要将
Set
更改为有序集合之一,根据需要对元素进行排序,将它们分组,然后将所有内容转换回Set
。