是否有一种函数式编程方法来检索集合的第一个元素?

时间:2013-03-08 15:29:55

标签: groovy

列表可以为空。我想这样做:

def value = "";
def list = getList()
if (!list.isEmpty()){
   value = list.first().foo 
}

例如我发现了这种方式:

assert ( [].find()?.foo?:"empty" ) == "empty"
assert ([[foo:"notEmpty1"], [foo:"notEmpty2"]].find()?.foo?:"empty") == "notEmpty1"

有更好的方法吗?

谢谢! :)

编辑:

我使用[0]

得到了很好的答案
assert ( [][0]?.foo?:"empty" ) == "empty"
assert ([[foo:"notEmpty1"], [foo:"notEmpty2"]][0]?.foo?:"empty") == "notEmpty1"

2 个答案:

答案 0 :(得分:0)

如果是List,请尝试

if (!list?.isEmpty()){
    list.get(0);
}

如果list元素不能为null,则不需要?

如果是Collection,有几种形式可以检索它。看一下这篇文章

Java: Get first item from a collection

答案 1 :(得分:0)

我从推特上得到了答案。声明:

def value = "";
def list = getList()
if (!list.isEmpty()){
   value = list.first().foo 
}

可写:

def value = list[0]?.foo?:""
如果列表可以包含空值

,则可以使用

find