2015-12-21 183 views
1

我有一個var類型ArrayBufferScala獲得滿足條件的ArrayBuffer的第一個元素

var selected = new ArrayBuffer[Component](0) 

我想從中提取滿足給定的條件的第一個元素。

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

我想要的東西,像上面的線,但如果沒有元素滿足該條件,我想resnull。相反,代碼會拋出一個錯誤。

如何獲得滿足條件的第一個元素或null

回答

7

首先,使用find而不是過濾器,它將返回Option上的第一個過濾器。然後使用orNull來獲取值或null如果它缺少:

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

或用null打交道時,你可以使用filterheadOptionorNull

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

作爲一種強制性的注意事項:使用Option而不是null是scala慣用和推薦的方式。