2017-06-14 96 views
0

我有這個問題我解決不了:

我越來越遠離火源基礎數據庫中的一些數據。 每一件事情的作品片除了當我到達冠軍列 因爲標題欄是一個JSON樹,它有一個鍵值的行這樣一個新的邏輯必須在這裏writen。

我試過到目前爲止
創建一個條目,它在哈希表保存我創造了我ConfigItem類中。

我接收到的數據就好了,但我不通過它知道誰循環。

當我到達while循環第三行,我java.lang.ClassCastException: java.util.HashMap$EntrySet cannot be cast to java.util.Map$Entry

我缺少的是什麼?

public class DataMappingConfig implements DataMappingStrategy { 

@Override 
public Object mapData(HashMap<String, Object> data) { 

    Log.i("key set " , data.keySet().toString() + " key set ") ; 
    HashMap<String , Object > mpair =null ; 
    HashMap<String, String> titlepairs = null ; 

    for (String key : data.keySet()) { 
     if (key.equals(KEY_TITLE)) { 

      final Iterator iterator = data.entrySet().iterator(); 

      while (iterator.hasNext()){ 
       mpair = new HashMap<String , Object >() ; 
       Map.Entry<String, Object> pair = (Map.Entry<String , Object>) data.entrySet() ; 
       HashMap<String,HashMap<String , String>> titleMap = (HashMap<String, HashMap<String, String>>) pair.getValue(); 
       titlepairs = new HashMap<String, String>();; 

      } 
     } 
    } 
     ConfigItem conf = new ConfigItem(); 
     if (data.containsKey(KEY_LOGIN)) { 
      conf.setLogin((Boolean) data.get(KEY_LOGIN)); // note the import above 
     } 
     if (data.containsKey(KEY_ICON)) { 
      conf.setIcon((String) data.get(KEY_ICON)); 
     } 
     if (data.containsKey(KEY_MAIN_SCREEN_ORDER)) { 
      conf.setNum(safeLongToInt((Long) data.get(KEY_MAIN_SCREEN_ORDER))); 
     } 
     if (data.containsKey(KEY_MODE)) { 
      String modeValue = (String) data.get(KEY_MODE); 
      if (modeValue.equals(VALUE_MODE_EMERGENCY)) { 
       conf.setEmenrgency(true); 
      } else if (modeValue.equals(VALUE_MODE_ROUTINE)) { 
       conf.setRoutine(true); 
      } 
      conf.setMode((String) data.get(KEY_MODE)); 
     } 
     if (data.containsKey(KEY_STATUS)) { 
      conf.setStatus((String) data.get(KEY_STATUS)); 
     } 
     if (data.containsKey(KEY_SHOW_DATE)) { 
      try { 

       conf.setShowDate((Boolean) data.get(KEY_SHOW_DATE)); 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
       Log.i("ERROR", "" + e.getLocalizedMessage()); 
      } 
     } 


     Log.i("Data Map config ", "conf item = " + conf.toString() + "\n"); 


     return conf; 
    } 

} 
+1

https://stackoverflow.com/questions/31832337/java -lang-ClassCastException異常的Java-UTIL-hashmapentryset-不能待澆注到Java –

+0

@Wajdi:如果你的問題已經解決,加一個答案和接受。如果您認爲該問題不再有用,請將其刪除。無論哪種方式:不要刪除問題主體。 –

回答

0

您試圖蒙上了SetMap.Entry

由於您的循環的條件是while (iterator.hasNext()),我假設您打算在循環內部使用iterator.next()

變化:

Map.Entry<String, Object> pair = (Map.Entry<String , Object>) data.entrySet(); 

到:

Map.Entry<String, Object> pair = (Map.Entry<String , Object>) iterator.next(); 

甚至更​​好,變化:

final Iterator iterator = data.entrySet().iterator(); 

到:

final Iterator<Map.Entry<String , Object>> iterator = data.entrySet().iterator(); 

然後你就不會需要一個投在所有:

while (iterator.hasNext()){ 
    mpair = new HashMap<String , Object >() ; 
    Map.Entry<String, Object> pair = iterator.next(); 
    HashMap<String,HashMap<String , String>> titleMap = (HashMap<String, HashMap<String, String>>) pair.getValue(); 
    titlepairs = new HashMap<String, String>(); 
} 
0

Map.Entry<String, Object> pair = (Map.Entry<String , Object>) data.entrySet() ; 

應該

Map.Entry<String, Object> pair = (Map.Entry<String , Object>) iterator.next(); 
+0

@wajdi,如果其中一個是正確的,那麼請接受一個。 – mikep

相關問題