迭代器中的 hasnext() 未按预期工作
hasnext() in iterator is not working as expected
我在使用 hasNext()
迭代器方法时遇到困难。我有一个 JSONArray
:
JSONArray = [{"a":1},{"b":2,"c":3}]
我一次访问一个 JSONObject
。第一个 JSONObject
在 JSONarray
中有一个元素,第二个有两个元素。问题是,当迭代器在第一个 JSONObject
上检查 hasNext()
时有一个元素给出 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.
}
请指出我哪里出错了。
hasNext 检查迭代器是否有任何要迭代的值以实际获取您应该执行的值:
if(k.hasNext()){
k.next(); // gets the actual value
}
hasNext() Returns true if the iteration has more elements.
next() Returns the next element in the iteration.
你打开迭代器
Iterator k = obj.keys();
然后立即查看是否有钥匙。由于您还没有使用第一个密钥 (a
),所以它当然会被使用。
另请注意,您会收到有关使用原始类型的警告 Iterator
。注意它们并适当地参数化(可能使用 <String>
)。
我在使用 hasNext()
迭代器方法时遇到困难。我有一个 JSONArray
:
JSONArray = [{"a":1},{"b":2,"c":3}]
我一次访问一个 JSONObject
。第一个 JSONObject
在 JSONarray
中有一个元素,第二个有两个元素。问题是,当迭代器在第一个 JSONObject
上检查 hasNext()
时有一个元素给出 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.
}
请指出我哪里出错了。
hasNext 检查迭代器是否有任何要迭代的值以实际获取您应该执行的值:
if(k.hasNext()){
k.next(); // gets the actual value
}
hasNext() Returns true if the iteration has more elements.
next() Returns the next element in the iteration.
你打开迭代器
Iterator k = obj.keys();
然后立即查看是否有钥匙。由于您还没有使用第一个密钥 (a
),所以它当然会被使用。
另请注意,您会收到有关使用原始类型的警告 Iterator
。注意它们并适当地参数化(可能使用 <String>
)。