[英]Last iteration for enhanced for loop
我試圖使用增強的for循環遍歷Iterable,但我無法確定何時是最后一個正在處理的值。
public void apply(Tuple key,
GlobalWindow w,
Iterable<Tuple5<String, Long, List<Lane>, Long, Long>> itrbl,
Collector<Tuple5<String, Long, List<Lane>, Long, Long>> clctr) throws Exception {
long cachedUmlaufSekunde = 0;
long currentUmlaufSekunde = 0;
long maxUmlaufSekunde = 0;
for(Tuple5 tuple:itrbl) {
maxUmlaufSekunde = (long)tuple.getField(4);
currentUmlaufSekunde = ((long)tuple.getField(1)/10)*10;
if(currentUmlaufSekunde == (cachedUmlaufSekunde + 10)) {
cachedUmlaufSekunde = currentUmlaufSekunde;
} else {
cachedUmlaufSekunde = cachedUmlaufSekunde + 10;
}
}
許多與此主題相關的問題建議使用函數iterator.hasNext()來確定最后一個元素,但我想使用像
itrbl.iterator.hasNext();
for循環中的內容不是解決方案。
如果你想知道迭代最后一個元素的時間,那么在標准for
循環中使用iterator
形式。 增強型for
將貫穿可迭代的所有元素,並且無法辨別何時結束。
for(Iterator<Tuple5> tuplIter = iterbl.iterator(); tuplIter.hasNext(); ) {
Tuple5 tupl = tuplIter.next();
// check for next
if(!tuplIter.hasNext()) {
// logic for processing the last tuple
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.