Groovy移除数组元素

时间:2019-04-01 12:59:31

标签: gradle groovy

我有这个gradle任务来获取zip内容并将其放入另一个zip。 我想从src zip中获取所有内容,并将其复制到目标zip目录“ x / y / z”中。
该代码有效,但是我想知道它是否可以更优雅。

    from( zipTree("a.zip") ) {
        include "r/**"
        includeEmptyDirs = false
        into "x/y/z"
        eachFile { fcd ->
            def segs1 = [fcd.relativePath.segments].flatten().findAll { it2 -> it2 != null };
            segs1.removeAt(3)
            fcd.relativePath = new RelativePath(true, segs1.toArray(new String[0]))
        }
    }

我遇到的问题是fcd.relativePath.segments是String [],我想在其中删除索引为3的元素。
在这里,我转换为列表,然后返回数组,brrr。

想法?

坦率

1 个答案:

答案 0 :(得分:1)

基于Java的Groovy

和在Java中:

  

数组是一个包含固定数量的单一类型值的容器对象。创建数组时将确定数组的长度。 创建后,其长度是固定的。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

因此,您可以将其转换为List,修改大小,然后转换回数组

或创建一个具有新大小的新数组,并将所需的元素复制到其中。