我有一个问题:有没有办法将迭代器直接递增到嵌套循环中? 示例
while(budgets.iterator().hasNext()){
if(budgets.iterator().next().getTipoBudget()!="I"){
if(budgets.size()<maxInviate){
for(i=0; i<maxInviate ;i++){
if(budgetArray[i]==0 && budgets.iterator().hasNext()){
budgetArray[i] = budgets.iterator().next().getBudgetField();
}
}
i=0;
Set budgetSet = new HashSet<Integer>(Arrays.asList(budgetArray));
Integer min = Collections.min(budgetSet);
valueAdw = valueAdw + min;
for(i=0; i<maxInviate; i++){
budgetArray[i] = budgetArray[i] - valueAdw;
}
}else{
valueAdw = null;
valueAdwEnd = null;
campaigns.addLast(new Campaign(valueAdw, valueAdwEnd, (long) adwordsBudget.getZona().getAdwordsCode()));
}
}
}
最佳答案
问题是 budgets.iterator()
每次都会返回一个新的 Iterator
,因此 budgets.iterator().hasNext()
将指针移动到您不再使用的 Iterator
中。
定义
Iterator iterator = budgets.iterator();
并在代码的其余部分中使用它。
@Sachin J 是对的,你也必须在 else block 中编写 iterator.next() 。 另外@Marko Topolnik 抱歉我刚刚看到你的评论,我并没有试图窃取你的想法。
关于java - java 迭代器嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10753653/