2013-07-12 41 views
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 

我如何下車頂部的前兩名接受項目沒有得到最後接受條目(因爲它就緒條目之前來)?

除創建日期以外的所有字段都是用戶定義的類(Call,User [no,not Resource]和ResourceStatus)。

請讓我知道,如果進一步的代碼將是有用的。

+0

感謝編輯Micha,在這裏實際提出問題仍然是新的。 –

回答

1

您可以使用takeWhile()

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

編輯無畏@dmahapatro的編輯回答
小測試案例比接受,並準備其他可用的狀態:

def list = ['A', 'A', 'B', 'A', 'R', 'A'] 
assert list.takeWhile{ it == 'A'} == ['A', 'A'] 
assert list.takeWhile{ it != 'R'} == ['A', 'A', 'B', 'A'] 
+0

Whoaaaaa。我知道會有更多的Groovier比循環它!時間檢查出來。 –

+0

繁榮!像魔術一樣!對於未來的答案追求者,我從表格頂部抓取了大約10個ResourceHistory,並通過statusDescription ==「Accepted」的測試將它們送入takeWhile。它只給了我第一個2,完全按照需要。再次感謝@doelleri! –

+1

@CharlesWood你只有'Accepted'和'Ready'狀態可用嗎?在這種情況下,你的方法是正確的。但是,如果你有更多的狀態,並且你想在'就緒'之前使用'Accepted'狀態,那麼你必須使用'statusDescription!='Ready''。看到上面的更新。 – dmahapatro

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] 
+0

那麼,正如我所說的,我只是想把'R'左邊的所有東西都拿出來。感謝代碼,但這仍然是Groovier而不是for循環或其他東西。 –

相關問題