java iterator hasnext方法工作异常

时间:2015-07-13 08:49:35

标签: java database iterator

我使用迭代器来查看Entry对象列表。它通过迭代器,初始化一个preparedStatement对象并将该对象添加到批处理中。当批次达到特定大小时,它会执行批处理并再次执行操作。
这是我的代码的一部分:

for (Fields field : fieldList) 
{
            if(field != null)
            {
                if (countField < batchLimit)//check if the batch size limit is reached 
                {
                    //more items can be added to batch
                    Iterator<Entry<String, List<String>>> i = field.getParameters();
                    if (i != null) 
                    {
                        while (i.hasNext()) 
                        {
                            Entry<String, List<String>> e = i.next();
                            for (String str : (List<String>) e.getValue()) 
                            {
                                psField.setString(1, field.getField1());
                                psField.setString(2, field.getField2());
                                psField.setString(3, str);
                                psField.addBatch();//add record to batch
                                psFieldTemp.addBatch();
                                countField++;
                            }
                        }
                    } 
                }
                else 
                {
                    //records in batch will be executed to Database
                    psField.executeBatch();
                    psFieldTemp.executeBatch();
                    countField = 0;
                    //empty the batch
                    psField.clearBatch();
                    psFieldTemp.clearBatch();
                }
            }
        }

我的问题是:每当迭代器有两个不同的条目具有field.getParameters()的相同值时,代码就不会从这一行开始:

while(i.hasnext())

例如,如果从迭代器中的两个不同条目获取的值类似于"language=java",则对于第一个条目,代码在条件下传递,但对于第二个条目则不在。 我使用Map修复了问题,但我想知道为什么会这样。

编辑:我添加了更多代码。

0 个答案:

没有答案