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

Groovy中对象数组的多级排序:按第三个元素及第二个元素排序的实现需求

Groovy数组按指定规则排序的实现方案

嗨,这事儿在Groovy里其实挺容易搞定的!你需要的是先按每个子数组的第三个元素排序,当第三个元素相同时再按第二个元素排序,咱们可以利用Groovy对集合排序的便捷特性来实现。

实现代码

直接看完整的示例吧,你可以直接复制运行验证:

def meal = [['Apple','Tomatoes', 'Coffee'],['Peach','Broccoli', 'Water'],['Orange','Peas', 'Pepsi'],['Banana','Beans', 'Coffee']]

// 核心排序逻辑
meal.sort { [it[2], it[1]] }

// 打印验证结果
println meal

逻辑解释

这里用到了Groovy的sort方法,传入的闭包返回一个包含两个元素的列表:

  • 第一个元素it[2]是子数组的第三个元素(Groovy数组是0索引的),这是第一排序优先级
  • 第二个元素it[1]是子数组的第二个元素,作为第二排序优先级

Groovy会自动按照这个列表的自然顺序进行排序:先比较第一个元素,当两个子数组的第三个元素相等时,再比较第二个元素,完全匹配你需要的排序规则。

运行结果

执行后你会得到期望的排序结果:

[[Banana, Beans, Coffee], [Apple, Tomatoes, Coffee], [Orange, Peas, Pepsi], [Peach, Broccoli, Water]]

如果你想保留原数组不变,而是生成一个新的排序后的数组,可以用toSorted()方法,比如:

def sortedMeal = meal.toSorted { [it[2], it[1]] }

这样原meal数组不会被修改,排序后的结果存在sortedMeal里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:27:30