2016-11-30 108 views
0

我有一個對象列表,並且該對象內有一個地圖數組。我必須訪問每個對象中存在的映射值。從地圖數組中檢索值(地圖位於對象內)

這裏是對象:

public class DiscoveredProduct 
{ 
    private String approvedOn; 
    private String rolledBackOn; 
    private Map<String, Object> raw_attributes[]; 
    private Map<String, Object> product_attributes[]; 
    private Map<String, Object> norm_attributes[]; 
} 

請幫幫忙!

+1

那些成員變量不是地圖,而是地圖數組。 – Jesper

+0

你的問題不太清楚。 – Prasath

回答

0
// we iterate over all arrays of Map 
for (Map<String,Object> map : raw_attributes){ 
    // we iterate over all values of the current map 
    for (Entry<String,Object> entry : map.entrySet()){    
     String key = entry.getKey(); 
     Object value = entry.getValue(); 
    } 

} 
0

鑑於代碼,您無法訪問這些Map(數組,btw!)中的值。

你可以做什麼:

  1. 變化從田間地頭私人公共;或者至少受到包裹保護(不推薦)
  2. 想出一個接口,表示您的類DiscoveredProduct可以提供。

例如:

public Object getRawAttributeFor(int index, String key) 

這將只是

return raw_attributes[index].get(key) 

(當然,你需要對這些輸入參數的適當檢查)

一個更方便的接口可以看看像

public List<Object> getRawAttributesFor(String key) 

這一次,您只需迭代您的地圖數組,然後返回地圖知道該鍵的所有這些值。

最後:閱讀關於java命名約定。你只能在SOME_CONSTANT中使用_ char;但沒有其他地方。