2017-06-14 81 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

相关问题