为了账号安全,请及时绑定邮箱和手机立即绑定

关于Java使用Map集合

标签:
Java

问题:关于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(),一下。至于原理么

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消