Scala获得满足条件的ArrayBuffer的第一个元素

时间:2015-12-21 18:12:53

标签: scala

我的var类型ArrayBuffer

var selected = new ArrayBuffer[Component](0)

我想从中提取满足给定条件的第一个元素。

var res = selected.filter(_.node == neighbour)(0)

我想要类似上面一行的内容,但如果没有元素满足该条件,我希望resnull。相反,代码会抛出错误。

如何获得满足条件的第一个元素或null

1 个答案:

答案 0 :(得分:8)

首先,使用find代替过滤器,它将返回Option上的第一个过滤器。然后使用orNull获取值,如果缺少值,则使用null

val res = selected.find(_.node == neighbour).orNull

或者您可以使用filterheadOptionorNull

val res = selected.filter(_.node == neighbour).headOption.orNull

在处理null时作为一种强制性说明:使用Option代替null是scala惯用和推荐方式。