我有一些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

10-07 19:34
查看更多