继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

关于Java使用Map集合

心纯净
关注TA
已关注
手记 9
粉丝 9
获赞 3

问题:关于Java使用Map集合,如何在key值相同但是value值不同的条件下,

往list中存入这些数据呢?这是自己在JDBC连接数据库时,遇到的一个问题.

比如下面的代码:

.........//这些代码省略掉了,也可以自己写个小测试类
List list = new ArrayList();
Map map = new HashMap();
 .......//
while (rs.next()) {
    username = rs.getString("username");
    createTime = rs.getTimestamp("createTime");
    title = rs.getString("title");
    content = rs.getString("content");
    System.out.println(username + " " + createTime + " " + " "
    + title + " " + content);
    map.put("username", rs.getString("username"));
    map.put("createTime", rs.getTimestamp("createTime"));
    map.put("title", rs.getString("title"));
    map.put("content", rs.getString("content"));
    list.add(map);
}

于是我一直这么做,后来发现,查出来的值,都是最后存入的,上网查了一下,

说是map集合的特性,key值相同,后面的数据会覆盖前面的数据。

那怎么办呢?

Java有没有什么方法或者特性呢?

当然了,给出代码:

List list = new ArrayList();
Map map = null;    //注意这里 

try {
    con = JDBCUtil.getConnection();
    String sql = "SELECT  u.username,m.title,m.content,m.createTime" +
            " FROM user AS u" +
            " INNER JOIN message AS m" +
            " ON u.id=m.userId" +
            " ORDER BY createTime DESC";
    pstmt = con.prepareStatement(sql);
    rs = pstmt.executeQuery();
    while (rs.next()) {
        map = new HashMap();  //注意这里
        username = rs.getString("username");
        createTime = rs.getTimestamp("createTime");
        title = rs.getString("title");
        content = rs.getString("content");
        System.out.println(username + " " + createTime + " " + " "
        + title + " " + content);
        map.put("username", rs.getString("username"));
        map.put("createTime", rs.getTimestamp("createTime"));
        map.put("title", rs.getString("title"));
        map.put("content", rs.getString("content"));
        list.add(map);
    }

请留意:“//注意这里”

  1. 也就是我每次存的时候,再对map给new  HashMap(),一下。至于原理么

哈哈哈,那要自己动一下大脑了。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP