如何从结果集中创建多个键值哈希图

时间:2019-07-05 11:13:58

标签: java hashmap

我想从一个结果集中创建多个哈希图。

最终结果应该类似于以下内容;

{
  slot_name = recommend,
  data = 7,
},
{
  slot_name = service,
  data = Good,
},
{
  slot_name = staff,
  data = Great,
},

我尝试如下:

HashMap<String, String> data = new HashMap<String, String>();

while (resultSet.next()) {
    data.put("slot_name", resultSet.getString("name"));
    data.put("data", resultSet.getString("param_value"));
}

但是当我打印出哈希图的值时,我得到一条记录,如下所示     System.out.println(data);

{
  slot_name = staff,
  data = Great,
}

我该如何实现?有人协助,谢谢

2 个答案:

答案 0 :(得分:1)

我建议有一个列表,并为“ slot_name”和“ data”创建一个模型类(而不是HashMaps)。在循环内部,构造对象并添加到列表中。之所以不能如预期那样,是因为HashMap将具有唯一的键。因此,对于再次添加该值的同一键,它将被更新。

class YourModel {
    String slotName;
    String data;
}

// inside loop
list.add(new YourModel(resultSet.getString("name"), resultSet.getString("param_value"));

答案 1 :(得分:0)

HashMap是键值存储。如果您多次输入相同的密钥,则先前的密钥将被覆盖。这就是您仅在输出中看到最后一个条目的原因。

如果您想要多个地图,请创建多个地图。 例如,

List<HashMap<String,String> maps = new ArrayList();
while (resultSet.next()) {
    HashMap<String, String> data = new HashMap<String, String>();
    data.put("slot_name", resultSet.getString("name"));
    data.put("data", resultSet.getString("param_value"));
    maps.add(data);
}