问题:关于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); }
请留意:“//注意这里”
也就是我每次存的时候,再对map给new HashMap(),一下。至于原理么
哈哈哈,那要自己动一下大脑了。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦