【问题标题】: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;
}