博客
关于我
java操作List
阅读量:798 次
发布时间:2023-01-24

本文共 1789 字,大约阅读时间需要 5 分钟。

List接口是Java中的一个常用集合接口,它定义了一系列操作方法,使得程序能够对集合进行 CRUD(创建、读取、更新、删除)等操作。学习List接口的实现类,比如ArrayList,能够帮助我们更好地理解集合的优势。

在实际项目开发中,我们经常需要从数据库中读取数据并将其存储到List中。然而,最近在操作数据库时遇到了一个棘手的问题:从表中获取的记录在List中看起来都一样,且全部显示为最后一条记录。此次经历让我深刻认识到一个容易被忽视的问题,也让我对List对象的创建方式有了更深入的理解。

数据库操作与List存储问题

数据库表的结构如下:

CategoryID CategoryName
1 programming
2 design
3 analysis
4 testing

我编写了如下的代码来获取所有分类:

public List
GetAllCategory() { try { String sql = "select * from tbCategory"; ResultSet rs = DbCRUD.Select(sql); List
list = new ArrayList<>(); Category c = new Category(); while (rs.next()) { // c = new Category(); 这里缺少了这一行代码 // 后续操作会将同一对象多次添加到List中 c.setCategoryId(rs.getInt(1)); c.setCategoryName(rs.getString(2)); list.add(c); } // ... 其他代码 ... } catch (...) { // 处理异常逻辑 }}

通过调试,我发现问题出在GetAllCategory方法中。当rs.next()方法获取到数据库中的每一条记录时,程序执行c.setCategoryId()c.setCategoryName()操作,然后将c对象添加到List中。然而,我没有在每次循环开始时创建新的Category对象,而是重复使用了相同的c对象。如果忘记重新创建c,所有List中的元素都将指向同一个Category对象,结果导致所有记录看起来都相同,且仅显示最后一条记录。

解决方法

为了解决这个问题,我在循环开始处添加了以下代码:

public List
GetAllCategory() { try { String sql = "select * from tbCategory"; ResultSet rs = DbCRUD.Select(sql); List
list = new ArrayList<>(); Category c = new Category(); while (rs.next()) { c = new Category(); c.setCategoryId(rs.getInt(1)); c.setCategoryName(rs.getString(2)); list.add(c); } // ... 其他代码 ... } catch (...) { // 处理异常逻辑 }}

这样,每次循环都会创建一个新对象c,确保List中存储的每个Category对象都是独一无二的,避免了引用同一对象多次的情况。

总结

在进行数据库操作时,尤其是涉及对象复制和List存储时,注意对象的创建和引用非常关键。重复使用同一对象会导致意想不到的结果,影响程序的正确性和用户体验。这次经历让我更加注意对象的生命周期管理,以避免类似的错误再次发生。

转载地址:http://dleyk.baihongyu.com/

你可能感兴趣的文章
Linux 的NFS服务的配置
查看>>
linux 的sh脚本中的-p、2>&1 &、$!、[]、-f、grep、awk、-z 相关的操作
查看>>
linux 的vi vim 的常用的基本命令
查看>>
Linux 的性能调优的思路
查看>>
Linux 的文本搜索命令 grep
查看>>
Linux 的账号与群组管理
查看>>
linux 目录&基础命令
查看>>
Linux 目录结构
查看>>
Linux 硬链接和软链接到底是什么?怎么理解?
查看>>
Linux 磁盘分区详解
查看>>
Linux 磁盘和文件系统管理1
查看>>
Linux 磁盘和文件系统管理2
查看>>
Linux 磁盘满了不用慌,这几个命令在手不断梭哈就好
查看>>
Linux 磁盘管理
查看>>
Linux 磁盘管理及监控与性能评估
查看>>
Linux 示例中的 apt 命令大全
查看>>
linux 禁用磁盘密码,linux 磁盘加密保护
查看>>
Linux 系统备份与恢复详解
查看>>
Linux 系统安装 Mongodb 数据库
查看>>
Linux 系统安装MySQL
查看>>