迭代器中的hasnext()未按预期工作

时间:2015-04-17 09:03:54

标签: java iterator jsonobject

我很难使用hasNext()迭代器方法。我有JSONArray

JSONArray = [{"a":1},{"b":2,"c":3}]

我一次访问一个JSONObjectJSONObject中的第一个JSONarray有一个元素,其中有两个元素。问题在于,当迭代器在第一个hasNext()上检查JSONObject时,它给出了一个元素,我的理解是,只有当它具有更多元素时才应该给出真实值。请帮助澄清一下。

for (int i=0; i<JArrayLength; i++) {

            JSONObject obj = newJArray.getJSONObject(i);

            Iterator k = obj.keys();
            System.out.println("Value k.hasnext is = " + k.hasNext());
            if(k.hasNext())
            { //print somehting} // here its printing but as the value should be false it should not for i=0.
}

请说明我哪里出错了。

2 个答案:

答案 0 :(得分:0)

hasNext检查迭代器是否有任何迭代值以实际获取你应该做的值:

if(k.hasNext()){
      k.next(); // gets the actual value
}
  

hasNext()如果迭代有更多元素,则返回true。

     

next()返回迭代中的下一个元素。

答案 1 :(得分:0)

打开迭代器

Iterator k = obj.keys();

然后立即检查是否有钥匙。由于您没有使用第一个密钥(a),当然可以。

另请注意,您收到有关使用原始类型Iterator的警告。注意它们并适当地进行参数化(可能使用<String>)。