2012-11-14 24 views
0

我的堆棧跟蹤看起來是這樣的:JAVA - 索引或映射屬性不支持Map類型的對象:

java.lang.IllegalArgumentException: Indexed or mapped properties are not supported on objects of type Map: get(1) 
at org.apache.commons.beanutils.PropertyUtilsBean.getPropertyOfMapBean(PropertyUtilsBean.java:813) 
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:764) 
at org.apache.commons.beanutils.BeanUtilsBean.getNestedProperty(BeanUtilsBean.java:715) 
at org.apache.commons.beanutils.BeanUtilsBean.getProperty(BeanUtilsBean.java:741) 
at org.apache.commons.beanutils.BeanUtils.getProperty(BeanUtils.java:382) 

我明白了這裏的時候,我試圖訪問一個地圖的一部分:

//Property Names 
for (int i=1; i < planMonthList.size(); i++) 
{ 
    planTab.add("planPosition....get" + "(" + i + ")"); 
} 

回答

3

您無法直接迭代地圖。你必須遍歷keySet,該entrySet,或values收集

例子:

Map <String,Integer> m = new HashMap<String,Integer>(); 

m.put("A", 1); 
m.put("B", 2); 
m.put("C", 3); 

// Iterate over keys 
for (String key : m.keySet()) { 
    System.out.println("Key=["+key+"], value=["+m.get(key)+"]"); 
} 

// Iterate over values 
for (Integer value : m.values()) { 
    System.out.println("Value=["+value+"]"); 
} 

// Iterate over entrySet 
for (Map.Entry<String,Integer> entry : m.entrySet()) { 
    System.out.println("Key=["+entry.getKey()+"], value=["+entry.getValue()+"]"); 
} 
+0

你能告訴我一個例子? –

相關問題