我很难使用迭代器方法hasNext()
。我有一个JSONArray
:
JSONArray = [{"a":1},{"b":2,"c":3}]
我一次访问一个JSONObject
。JSONarray
中的第一个JSONObject
有一个元素,第二个有两个元素。问题是,当迭代器用一个元素检查hasNext()
的第一个JSONObject
时,它给出 true,我的理解是,只有当它有更多的元素而不是现在的元素时,它才应该给出 true。请帮助并澄清这一点。
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.
}
请建议我哪里出错了。
打开迭代器
Iterator k = obj.keys();
然后立即检查它是否有钥匙。由于您没有使用第一个密钥(a
),它当然会。
另请注意,您会收到有关使用原始类型 Iterator
的警告。注意它们并适当地参数化(可能带有<String>
)。
hasNext 检查迭代器是否有任何值要迭代以实际获取您应该执行的值:
if(k.hasNext()){
k.next(); // gets the actual value
}
hasNext() 如果迭代具有更多元素,则返回 true。
next() 返回迭代中的下一个元素。