用arraylist管理图书和读者时,需重写book和reader的equals()与hashcode()(book按isbn、reader按id),借阅状态用枚举borrowstatus替代字符串,控制台输入后及时调用nextline()清空缓冲区,初期避免文件持久化以聚焦核心流程。
如何用ArrayList管理图书和读者对象
Java里不用数据库时,ArrayList是最直接的内存容器选择。别一上来就琢磨Map或Set——图书编号可能重复(比如不同版本同一书名),而读者借阅关系是动态增删的,ArrayList<book></book> 和 ArrayList<reader></reader> 足够撑起初期逻辑。
关键点在于对象设计要带可比较性:给 Book 类重写 equals() 和 hashCode(),依据 isbn(不是书名)判断是否为同一本书;Reader 则按 id 判等。否则 list.remove(book) 可能删不掉。
- 避免用
String title作为查找主键,改用String isbn字段,国际标准更可靠 - 借书操作前先
books.contains(b),但前提是equals()已正确定义 - 不要在遍历
ArrayList时直接remove(),会抛ConcurrentModificationException,改用Iterator.remove()或倒序索引删除
借阅状态怎么用枚举比字符串更安全
别用 String status = "borrowed" 表示状态。Java枚举(enum)能杜绝拼写错误、支持 switch、还能附带行为——比如 BORROWED 状态下禁止二次借出。
定义一个 BorrowStatus 枚举:
立即学习“Java免费学习笔记(深入)”;
public enum BorrowStatus {
AVAILABLE, BORROWED, LOST, RESERVED
}
然后在 Book 类中用 private BorrowStatus status = BorrowStatus.AVAILABLE;。这样所有状态变更都受限于枚举值,IDE还能自动补全、编译期报错。