迭代器中没有这样的元素

时间:2012-04-03 06:56:22

标签: java loops iterator

我有一个简单的代码,我需要迭代列表并用XML编写 但问题是,有时候我的标签超出了,而且价值低于标签,所以我想在那里写一个“ - ”或类似的东西。
但是这样做时我遇到了问题。这是我想要做的。

while(iter1.hasNext()){
            for (Object elementKey  : tags) {
Here is the problem---->String value = iter1.next();
                        String element = (String) elementKey;
                        if(value!=null){
                        out.write("<"+element+">"+value+"</"+element+">");
                        }
                        else
                            out.write("<"+element+">"+"-"+"</"+element+">");

                        }

                    }

当Iterator没有任何东西时,它没有给我这样的元素例外 我必须在for循环中调用iter1.next()因为for循环的一次迭代我有迭代器的几个值。
就像你可以说我在for循环中有60个元素而对于这60个元素我只有56个从迭代器中获取这些值。有人告诉我一个好的数据结构吗?我该怎么办?

4 个答案:

答案 0 :(得分:1)

您执行iter1.next()几次(因为它在for循环中)为您执行的每个“hasNext()”调用执行。要解决此问题,您需要移动iter1.next()大于for循环。

答案 1 :(得分:1)

您在iter1.next();的{​​{1}}循环中呼叫for each,因此在您只调用tags一次时可能会多次调用它!

您可能希望在iter1.hasNext()循环之外声明您的变量:

for each

答案 2 :(得分:0)

问题是您为tags集合中的每个Object调用iter1.next()。这将导致迭代器在您预期之前结束。

String value = iter1.next();放在'tags'循环之外。

答案 3 :(得分:0)

你在循环中执行next(),所以在检查下一项是否有1个确定后,你会尝试多次获取next

也许你应该在循环之前创建一个String实例然后使用它?

while(iter1.hasNext()){
          String next = iter1.next()
            for (Object elementKey  : tags) {
              String value = next;
              ...