可以使用Groovy语言中的集合操作来实现这个要求。下面是一个示例代码:

def splitIntoSubsets(list) {
    def result = []
    def currentSubset = []
    
    list.each {
        if (currentSubset.isEmpty() || currentSubset.last() + 1 == it) {
            currentSubset << it
        } else {
            result << currentSubset
            currentSubset = [it]
        }
    }
    
    result << currentSubset
    
    return result
}

def splitIntoGroups(list) {
    def subsets = splitIntoSubsets(list)
    def result = []
    
    subsets.each {
        if (it.size() > 7) {
            result.addAll(splitIntoSubsets(it).findAll { it.size() == 7 })
        } else {
            result << it
        }
    }
    
    return result
}

def list = [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 19, 20]
def result = splitIntoGroups(list)

result.each {
    println it
}

上述代码中,splitIntoSubsets函数用于将原始列表拆分成连续的子集合。splitIntoGroups函数则根据拆分后的子集合进行进一步划分。最后,我们使用示例列表 [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 19, 20] 进行测试,并打印出结果。输出如下:

[1, 2, 3, 4]
[6, 7, 8]
[10, 11, 12, 13]
[15, 16]
[18, 19, 20]

注意:在示例列表中,数字 5 和 9 并没有连续出现,因此它们被分别放在了两个不同的子集合中。

groovy从一组集合中按是否连续拆分成多个连续的子集合然后对连续子集超过7个的按7个一组再次拆分

原文地址: https://www.cveoy.top/t/topic/i8PM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录