Groovy4 中常用且强大的 List 扩展方法

8 阅读3分钟

Groovy4 为 List 提供了大量强大且简洁的扩展方法,极大地方便了集合操作。其丰富的扩展方法在日常开发中非常实用。

下面是一个表格,汇总了 Groovy4 中常用且强大的 List 扩展方法,并附上了简要说明和示例。

方法类别方法名作用描述简单示例(def list = [1, 2, 3, 4, 5]
遍历与迭代each遍历每个元素,返回列表本身list.each { println it }
eachWithIndex带索引遍历元素list.eachWithIndex { item, idx -> println "$idx: $item" }
查找与匹配find返回第一个满足条件的元素list.find { it > 3 } // 4
findAll返回所有满足条件的元素list.findAll { it % 2 == 0 } // [2, 4]
every判断是否所有元素都满足条件list.every { it < 10 } // true
any判断是否存在任一元素满足条件list.any { it > 4 } // true
转换与加工collect将列表中的每个元素转换为新值,生成新列表list.collect { it * 2 } // [2, 4, 6, 8, 10]
collectMany将每个元素转换的结果集合“扁平化”后返回['a', 'b'].collectMany { [it, it.toUpperCase()] } // ['a', 'A', 'b', 'B']
flatten将嵌套列表递归地压平为一维列表[1, [2, 3]].flatten() // [1, 2, 3]
inject迭代并累积结果(类似 reduce)list.inject(0) { sum, val -> sum + val } // 15 (求和)
排序与去重sort排序(可传入自定义比较器闭包)[3,1,2].sort() // [1,2,3]
[3,1,2].sort { a, b -> b <=> a } // [3,2,1]
unique原地移除重复元素,返回去重后的列表本身[1,2,3,2,1].unique() // [1,2,3]
toUnique返回一个新的去重后的列表,原列表不变[1,2,3,2,1].toUnique() // [1,2,3]
增减与操作plus (+)列表相加(合并)[1,2] + [3,4] // [1,2,3,4]
minus (-)列表相减(移除元素)[1,2,3,4] - [2,4] // [1,3]
push将元素追加到列表末尾list.push(6) // 返回 true, list 变为 [1,2,3,4,5,6]
pop移除并返回列表最后一个元素list.pop() // 返回 5, list 变为 [1,2,3,4]
分组与分割groupBy根据规则分组,返回一个 Map[1,2,3,4].groupBy { it % 2 } // [0:[2,4], 1:[1,3]]
split根据条件将列表分割为两个子列表的元组list.split { it <= 3 } // [[1,2,3], [4,5]]
信息获取min / max查找最小/最大值(可传入条件闭包)list.min() // 1
['ab', 'a'].max { it.size() } // 'ab'
count计算满足条件的元素个数list.count { it % 2 == 0 } // 2
sum对列表中的所有元素求和list.sum() // 15

⚠️ 注意事项

  1. 修改方式:注意区分原地修改(如 unique(),sort())和返回新集合(如 toUnique(),collect())的方法,这会影响原列表的值。
  2. 性能考量:虽然这些语法糖非常方便,但在处理超大规模数据或在性能极端敏感的场景下,需要注意其背后可能产生的开销(如创建中间集合)。有时传统的 for 循环可能更高效5。
  3. 惰性求值 (Lazy Evaluation) :Groovy 3.0+ 引入了惰性集合操作,如 lazyCollect,它在你真正需要结果时才会进行计算,有助于优化性能