如何将数组对象放在hashmap中?

时间:2016-05-06 07:09:18

标签: java arrays hashmap

我正在努力解决这个问题,但我现在已经在这里停留了一段时间。我的问题是我找不到如何将数组对象放到我的hashmap的方法。

这是我从谷歌获得的下拉菜单的hashmap示例代码。

private Map<String,Map<String,String>> data2 = new HashMap<String,Map<String,String>>();
private String country; 
private String city;  
private Map<String, String> countries;
private Map<String,String> cities;

 countries  = new HashMap<String, String>();
        countries.put("USA", "USA");
        countries.put("Germany", "Germany");
        countries.put("Brazil", "Brazil");

        Map<String,String> map = new HashMap<String, String>();
        map.put("New York", "New York");
        map.put("San Francisco", "San Francisco");
        map.put("Denver", "Denver");
        data2.put("USA", map);

        map = new HashMap<String, String>();
        map.put("Berlin", "Berlin");
        map.put("Munich", "Munich");
        map.put("Frankfurt", "Frankfurt");
        data2.put("Germany", map);

现在..我的问题是如何将我的对象放入hashmap。

这是我获取数组对象的代码。

     while(rs.next()){
                     PropertyData reader = new PropertyData();
                     id = rs.getInt("id");
                     prop_name = rs.getString("prop_name");
                     prop_value = rs.getString("prop_value");
                     engine_name = rs.getString("engine_name");
                     //other setter..


                     reader.setId(id);
                     reader.setPropName(prop_name);
                     reader.setPropValue(prop_value);
                     reader.setEngineName(engine_name);
                     //other setter..

                     prop.add(reader);
                 }

从上面的代码。我想将 id 放在hashmap键上,将 propname 放在hashmap string name上。选择后,我想显示引用 id 的其他值。

这是我添加对象的地方。

    static List<PropertyData> prop = new ArrayList<PropertyData>();

我尝试在我的hashmap上初始化它,但它返回null。

3 个答案:

答案 0 :(得分:0)

 new HashMap<String, String>() 

表示键的类型为String,值的类型为String。如果要在值中包含PropertyData,请将其定义为

  new HashMap<String, PropertyData>()

答案 1 :(得分:0)

如果您可以使用以下表示法创建HashMap,则可以向地图添加列表..

HashMap<String, List<PropertyData>> map = new HashMap<>();

答案 2 :(得分:0)

好的,这个列表中有数据:

List<PropertyData> prop = new ArrayList<PropertyData>();

现在,像这样创建地图(如果PropertyData有唯一的id - 也将大小设置为数组的大小,调整大小只会执行一次):

HashMap<Integer, PropertyData> map = new HashMap<>(prop.size());

这就是你把它放在地图上的方式:

for (PropertyData pd : prop) map.put(pd.getId(), pd);

如果id中的PropertyData不唯一,请创建int hashCode()函数,该函数将创建唯一的int(基于所有变量中的值 - IDE可以为您创建)