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