我甚至不确定如何搜索这是否是现有问题。我举一个例子:
Call Instance Date Created Resource Resource Status
------------------------------------------------------------------
6557 2013-07-12 11:34:19 cwood Accepted
6556 2013-07-12 11:34:18 cwood Accepted
2013-07-12 11:29:25 cwood Ready
6555 2013-07-12 09:24:41 cwood Accepted
如何获取最高的两个已接受的条目而不获取最后一个已接受的条目(因为它来自Ready条目之前)?
除了创建日期之外的所有字段都是用户定义的类(Call,User [no,not Resource]和ResourceStatus)。
如果进一步的代码有用,请告诉我。
答案 0 :(得分:1)
您可以使用takeWhile()
:
assert [1,2] == [1,2,3,4,5].takeWhile { it < 3 }
编辑( @dmahapatro的Audacity编辑答案)
除接受和就绪之外的可用状态的小测试用例:
def list = ['A', 'A', 'B', 'A', 'R', 'A']
assert list.takeWhile{ it == 'A'} == ['A', 'A']
assert list.takeWhile{ it != 'R'} == ['A', 'A', 'B', 'A']
答案 1 :(得分:1)
以下问题陈述的逻辑:
哦,这是@dmahapatro的好点。有时用户可能会在打电话时忙碌,我想要获得在忙碌之前但在准备好之后发生的任何接受状态(“之前”在“右边”之后),并且不会获得忙碌。所以,我想我需要做statusDescription!='Ready'和statusDescription!='忙'左右。如果没有人必须使用它,代码肯定会更清洁!
def list = ['A', 'A', 'A', 'R', 'A', 'A','B', 'A']
def statusBeforeBusy = list.takeWhile{ it != 'B'}
println "Statuses before Busy: $statusBeforeBusy" //[A, A, A, R, A, A]
def statusBeforeReady = list.takeWhile{ it != 'R'}
println "Statuses before Ready: $statusBeforeReady" //[A, A, A]
def statusaAfterReadyBeforeBusy = statusBeforeBusy.dropWhile{ it != 'R'}.tail()
println "Statuses After Ready before Busy: $statusaAfterReadyBeforeBusy" //[A, A]