You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中如何将列表均衡分割为4个子列表(无额外子列表)

列表均衡分割为4个子列表的解决方案

当使用collate(localities.size().intdiv(4))处理无法被4整除的列表时,剩余元素会单独形成额外子列表。要实现仅生成4个子列表并将余数均衡分配,可按以下方式实现:

实现代码

def totalSize = localities.size()
def baseSize = totalSize.intdiv(4)
def remainder = totalSize % 4

def sublists = []
int currentPos = 0

// 分配带余数的子列表(前remainder个各多1个元素)
for (int i = 0; i < remainder; i++) {
    sublists.add(localities.subList(currentPos, currentPos + baseSize + 1))
    currentPos += baseSize + 1
}

// 分配剩余基础大小的子列表
for (int i = remainder; i < 4; i++) {
    sublists.add(localities.subList(currentPos, currentPos + baseSize))
    currentPos += baseSize
}

// 输出验证
for(sublist in sublists){
    println(sublist.join(','))
    println "next"
}

逻辑说明

  • baseSize:总元素数整除4得到的基础子列表大小,比如163个元素时为40
  • remainder:总元素数除以4的余数,163时为3,意味着前3个子列表各多1个元素(即41个),最后1个为40个
  • 通过分两次遍历,先处理需要多分配元素的子列表,再处理基础大小的子列表,确保最终仅生成4个子列表,且元素分配均衡

内容的提问来源于stack exchange,提问作者deewreck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:45:38