groovy从一组集合中按是否连续拆分成多个连续的子集合然后再对刚才处理得到的连续子集中超过7个元素的的按7个一组再次拆分
以下是使用Groovy编程语言实现将一组集合按是否连续拆分成多个连续的子集合,并对超过7个元素的子集合再次按7个一组拆分的示例代码:
def splitIntoSubsets(List list) {
def subsets = []
def subset = []
list.eachWithIndex { element, index ->
if (index > 0 && element != list[index - 1] + 1) {
subsets << subset
subset = []
}
subset << element
}
subsets << subset
subsets.findAll { it.size() > 0 }
}
def splitIntoGroups(List list, int groupSize) {
list.collate(groupSize)
}
def inputList = [1, 2, 3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25]
def subsets = splitIntoSubsets(inputList)
def result = subsets.collect { subset ->
if (subset.size() > 7) {
splitIntoGroups(subset, 7)
} else {
[subset]
}
}
println result
以上代码中,首先定义了两个辅助函数splitIntoSubsets和splitIntoGroups。splitIntoSubsets函数用于将一组集合按是否连续拆分成多个连续的子集合,其中使用了eachWithIndex方法遍历集合并判断是否连续。splitIntoGroups函数用于将超过指定大小的子集合再次按指定大小拆分成多个子集合。
然后,定义了输入集合inputList,并调用splitIntoSubsets函数将其拆分成连续的子集合。接着,使用collect方法遍历每个子集合,如果子集合大小超过7,则调用splitIntoGroups函数将其再次拆分成大小为7的子集合;否则,直接将子集合放入结果列表中。
最后,输出结果列表。运行以上代码,可以得到按要求拆分的多个连续子集合。
原文地址: https://www.cveoy.top/t/topic/i8PR 著作权归作者所有。请勿转载和采集!