2015-04-17 19 views
0

我在使用hasNext()迭代器方法時遇到困難。我有一個JSONArray迭代器中的hasnext()未按預期工作

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

我在同一時間訪問一個JSONObject。第一個JSONObject中的JSONarray有一個元素秒有兩個元素。問題是,當迭代器在第一個JSONObject上檢查hasNext()時,只有一個元素表示它是真實的,我的理解是隻有當它具有更多元素時,它纔會成立。請幫助並澄清這一點。

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. 
} 

請建議我去哪裏錯了。

回答

0

您打開迭代器

Iterator k = obj.keys(); 

,然後立即檢查,看看是否有按鍵。既然你沒有消費第一把鑰匙(a),當然它確實如此。

另請注意,您會收到有關使用原始類型Iterator的警告。注意它們並適當地參數化(可能與<String>)。

+0

感謝您的回覆,但我無法獲得它。那麼我應該如何消費第一把鑰匙呢? k的值應該是no。在json對象中的鍵或它們的值,我試着打印k來檢查,但它給了-Value k is = [email protected] – user3712016

+0

不,k的*值*是一個'Iterator'。底層數據結構中的項目數量不可見,因爲它可能是不確定的(遍歷網絡流)或無限(生成器)。 – chrylis

+0

它不幫我多少,但確定,TX! ...我正在學習如此:) – user3712016

0

hasNext檢查迭代器,如果有任何值重複,以實際得到你應該做的值:

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

hasNext()如果迭代器有多個元素,則返回true。

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

+0

感謝您的回覆,但這不是我的疑問,它在tx上面回答:) – user3712016