我有一个有多行的resultSet。我想制作一个hashmap。但是在存储arrayList并将key作为列之一时,对于每个键,所有行都存储在arrayList中。 这意味着对于每个键,存储所有行而不是该键的确切行。
的HashMap> map = new HashMap>(); Pojo pojo = null; PreparedStatement ps = null; ResultSet rs = null; ArrayList list = null;
try {
ps = DatabaseManager.prepareStatement(query);
ps.setInt(1, number);
rs = ps.executeQuery();
while(rs.next()){
pojo = new Pojo();
pojo.setId(rs.getInt("ID"));
pojo.setDate(rs.getDate("DATE"));
pojo.setTotal(rs.getDouble("TOTAL"));
list.add(pojo); map.put(rs.getInt("ID"), list);
}
rs.close();
所以对于所有键,列表的大小是15.虽然应该是这样的 ID行 1A 3 2A 4 3C 2 4W 6
那么代码应该如何获得所需的结果呢?
答案 0 :(得分:0)
您可以尝试这样的事情,
while(rs.next()){
// Check if map contains list
if (map.contains(rs.getInt("ID"))
list = map.get(rs.getInt("ID"));
else
list = new ArrayList<Pojo>();
pojo = new Pojo();
pojo.setId(rs.getInt("ID"));
pojo.setDate(rs.getDate("DATE"));
pojo.setTotal(rs.getDouble("TOTAL"));
list.add(pojo);
map.put(rs.getInt("ID"), list);
}
希望它有效。