从地图数组中检索值(地图位于对象内)

时间:2016-11-30 09:40:44

标签: java

我有一个对象列表,对象内部有一个映射数组。我必须访问每个对象中存在的地图值。

这是对象:

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[];
}

请帮忙!

2 个答案:

答案 0 :(得分:0)

鉴于该代码,您无法访问这些Map中的值(数组,顺便说一句!)。

你能做什么:

  1. 将字段从私有更改为 public ;或者至少包装保护(不推荐)
  2. 想想您的DiscoveredProduct类可以提供的界面
  3. 例如:

     public Object getRawAttributeFor(int index, String key)
    

    只是

       return raw_attributes[index].get(key)
    

    (当然,您需要正确检查这些输入参数)

    更方便的界面可能看起来像

    public List<Object> getRawAttributesFor(String key)
    

    这一次,您只需迭代您的地图数组,并返回地图知道该关键字的所有值。

    最后:阅读有关java命名约定的内容。你只在SOME_CONSTANT中使用_ char;但没有其他地方。

答案 1 :(得分: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();
    }

}