0

如果这是一个现有问题,我什至不确定如何搜索。让我举个例子:

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

如何在不获取最后一个 Accepted 条目的情况下将前两个 Accepted 条目从顶部移开(因为它在 Ready 条目之前)?

除 Date Created 之外的所有字段都是用户定义的类(Call、User [no, not Resource] 和 ResourceStatus)。

请让我知道进一步的代码是否有用。

4

2 回答 2

1

您可以使用takeWhile()

​assert [1,2] == [1,2,3,4,5].takeWhile { it < 3 }​

编辑@dmahapatro 的大胆编辑答案
除 Accepted 和 Ready 之外的可用状态的小测试用例:

def list = ['A', 'A', 'B', 'A', 'R', 'A']
assert list.takeWhile{ it == 'A'} == ['A', 'A']
assert list.takeWhile{ it != 'R'} == ['A', 'A', 'B', 'A']
于 2013-07-12T18:55:32.727 回答
1

以下问题陈述的逻辑:

哦,这是一个很好的观点@dmahapatro。有时,用户可能会在通话时忙,我希望获得在忙之前但在就绪之后发生的任何已接受状态(“之前”在“右侧”),而不是忙. 所以,我想我需要做 statusDescription != 'Ready' 和 statusDescription != 'Busy' 左右。无需人们使用它,代码肯定会更干净!

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]
于 2013-07-12T21:51:13.630 回答