在Groovy中使用takeWhile而不是findAll或反之亦然有什么好处吗?

时间:2015-10-08 09:04:06

标签: groovy

使用takeWhile而不是findAll有什么好处,反之亦然?因为两者输出相同的结果。 takeWhile和findAll之间的确切区别是什么。

例如:

List age = [1,2,5,7,4,9,93,13]

使用TakeWhile:

age.takeWhile{it>9}

它会输出:[93,13]

使用findAll

age.findAll{it>9}

它会输出:[93,13]

1 个答案:

答案 0 :(得分:2)

takeWhile一直工作,直到找到第一个违反给定条件的元素。 但是findAll在完整列表上运行并返回与条件匹配的所有元素。

举个例子,我们有一个清单:

List age = [1,2,5,17,4,9,93,13]

如果我们在以下条件下运行takeWhile:

age.takeWhile{it<9}

将输出:

[1, 2, 5]

虽然4&lt; 9,但是在索引3处遇到了17,导致循环在此处中断。

但如果你在上面运行findAll:

age.findAll{it<9}

它将返回列表中小于9的所有元素:[1, 2, 5, 4]