如何在Groovy中获取除给定列表中的最后一项之外的所有项目?

时间:2013-01-22 08:08:13

标签: groovy

这可能听起来很简单,但有点像是如何打印所有但忽略列表中最后一个元素的逻辑。任何建议都会有所帮助。

    def list = [
        'homePage',
        'productPage',
        'basketPage',
        'categoryPage'
    ]
    def counter = 1
    list.each { element ->
        if (element == list.last()){
            list.remove(3)
            println "Item $counter -" + element 
        }
    }

预期输出

第1项 - 主页
第2项 - productPage
第3项 - basketPage

3 个答案:

答案 0 :(得分:1)

Groovy支持集合上的范围操作:

print list[0..list.size-2]

这将打印:

[homePage, productPage, basketPage]

答案 1 :(得分:1)

解决方案:

list.take(list.size() - 1)

使用println:

list.take(list.size() - 1).eachWithIndex { element, i ->
    println "Item " + i + " - " + element
}

答案 2 :(得分:1)

它可能比@SteveD答案更短:

println list[0..-2]