拆分设置为多个集Scala

St.*_*rio 6 collections scala

我有一些Set[String]和一些数字devider: Int.我需要将每个具有大小的片段任意分割devider.例子:

1.

Set: "a", "bc", "ds", "fee", "s"
devider: 2
result: 
    Set1: "a", "bc"
    Set2: "ds", "fee"
    Set3: "s"
Run Code Online (Sandbox Code Playgroud)

2.

Set: "a", "bc", "ds", "fee", "s", "ff"
devider: 3
result: 
    Set1: "a", "bc", "ds"
    Set2: "fee", "s", "ff"
Run Code Online (Sandbox Code Playgroud)

3.

Set: "a", "bc", "ds"
devider: 4
result: 
    Set1: "a", "bc", "ds"
Run Code Online (Sandbox Code Playgroud)

这样做的惯用方法是什么Scala

jwv*_*wvh 18

你可能想要这样的东西:

Set("a", "bc", "ds", "fee", "s").grouped(2).toSet
Run Code Online (Sandbox Code Playgroud)

问题在于Set,根据定义,a 没有顺序,因此无法确定将哪些元素组合在一起.

Set( "a", "bc", "ds", "fee", "s").grouped(2).toSet
//res0: Set[Set[String]] = Set(Set(s, bc), Set(a, ds), Set(fee))
Run Code Online (Sandbox Code Playgroud)

要以特定方式对它们进行分组,您需要将其更改Set为其中一个有序集合,根据需要对元素进行排序,对它们进行分组,然后将所有内容转换回Sets.