【问题标题】:Split Set into multiple Sets Scala将集合拆分为多个集合 Scala
【发布时间】:2017-03-22 06:37:07
【问题描述】:

我有一些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 的构造)。

标签: scala collections


【解决方案1】:

你可能想要这样的东西:

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 更改为有序集合之一,根据需要对元素进行排序,将它们分组,然后将所有内容转换回 Sets。

【讨论】:

    【解决方案2】:

    只有当它是这样的列表时才有可能:

    val pn=List("a", "bc", "ds", "fee", "s").grouped(2).toSet
    println(pn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多