2013-07-09 83 views
1

下一個索引我有:獲取循環

List<Object> list = ((Dao)dao).findAll(); 
for(int i; i < list.size(); i++) { 
    list.getIndex(i); 
    list.getIndex(i+1); 
} 

這是更多鈔票? 我正在使用迭代?

+0

不知道關於Groovy但假設將拋出一個異常'我==則爲list.size() - 1'! – NINCOMPOOP

+0

是的,但是在那一刻被一個try-catch控制 –

+0

@DavidJara你不應該使用'try' ...'catch'塊來解決錯誤的代碼 –

回答

1

您可以這樣做,但爲了防止發生異常,您應該使用for (int i = 0 ; i < list.size() - 1; i++)


您可以使用此collate獲得不重疊的對:

[1, 2, 3, 4, 5, 6, 7, 8, 9].collate(2).each { 
    def (first, second) = it 
    println "$first $second" 
} 

,它將打印:

1 2 
3 4 
5 6 
7 8 
9 null 
1

如果你想比較的鄰居,你可能會更好附:

for(int i = 1; i < list.size() ; i++) { 
list.getIndex(i - 1) 
list.getIndex(i) 
} 

或者我認爲你可以這樣做:

list.collate(2, 1, false).each { a, b -> 
    println "$a $b" 
}