将arraylist放在hashmap中,使用key作为列之一

时间:2017-12-05 12:23:09

标签: arraylist hashmap

我有一个有多行的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

那么代码应该如何获得所需的结果呢?

1 个答案:

答案 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);
}

希望它有效。