Groovy中如何去除数组空元素并展开多余嵌套括号
错误原因
你原先使用的myArray.removeAll(['[]'] as Object[])不生效,是因为你传入的匹配项是字符串"[]",和数组中实际的空列表对象类型不匹配,无法命中需要移除的空数组,因此返回false没有修改原数组。
正确实现方式
Groovy内置了集合的扁平化操作方法,无需多层遍历即可实现需求:
方案1(最简洁)
直接使用flatten()方法递归展开所有嵌套集合,展开过程中空数组不会生成任何元素,最终直接得到目标结构:
myArray = [[],[],[],[],['test', 'hello'], [], [], [['one', 'two'], ['three','four']], [], ['five']] def result = myArray.flatten()
执行后result的值就是预期的['test','hello','one','two','three','four','five']。
方案2(增加空值过滤)
如果需要同时过滤展开后可能存在的null、空字符串等假值,可以增加findAll()过滤:
def result = myArray.flatten().findAll()
方案3(先移除顶层空数组再展开)
如果你需要先显式清理顶层空元素再做扁平化,可以用闭包形式的removeAll匹配空集合:
// 移除所有顶层空数组 myArray.removeAll { it instanceof List && it.isEmpty() } // 再扁平化嵌套结构 def result = myArray.flatten()
内容的提问来源于stack exchange,提问作者Oplop98
相关产品推荐
相关产品推荐

