我正在努力解决这个问题,但我现在已经在这里停留了一段时间。我的问题是我找不到如何将数组对象放到我的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。
答案 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可以为您创建)