【问题标题】:Breaking down a set into smaller sets将一个集合分解成更小的集合
【发布时间】:2020-04-25 13:16:20
【问题描述】:

我有一组超过 40,000 项,我想将其分解为多组,每组 5,000 项,因为 Room 不允许我一次使用一组 5,041 项作为参数。

我该怎么做?

fun breakDownSet(set: Set<String>) : List<Set<String>> {
    val sets = ArrayList<Set<String>>()
    // TODO

    return sets
}

【问题讨论】:

    标签: java android kotlin set


    【解决方案1】:

    您可以使用chunked

    fun breakDownSet(set: Set<String>): List<Set<String>> = set.chunked(5000) { it.toSet() }
    

    这会将您的集合分成几个集合,每个集合不超过 5000 个项目。

    【讨论】:

      【解决方案2】:

      抱歉,不了解 Kotlin,所以这里是 Java 版本。你应该很容易转换到 Kotlin。

      static List<Set<String>> breakDownSet(Set<String> set, int size) {
          List<String> list = new ArrayList<>(set);
          List<Set<String>> result = new ArrayList<>();
          for (int i = 0; i < list.size(); i += size)
              result.add(new HashSet<>(list.subList(i, Math.min(i + size, list.size()))));
          return result;
      }
      

      【讨论】:

        猜你喜欢
        • 2015-12-23
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 2015-02-26
        • 2023-03-07
        • 1970-01-01
        • 2021-05-14
        相关资源
        最近更新 更多