前面详细介绍了 Java 中各集合的使用,像 Set 集合和 List 集合等,另外,还结合泛型讲解了一些高级应用。在实际开发中,泛型集合是较常用的,一般定义集合都会使用泛型的形式来定义。本节将使用泛型集合来模拟实现某图书管理系统的查询功能。

在图书管理系统中为了方便管理图书,将图书划分为几个类别。每个类别下有很多图书,每本图书都有相对应的类别,这就具备了一对多的关系映射,即一个类别对应多本图书。

在这种情况下就可以使用 Map 映射来存储类别和图书信息,其键为 Category(类别)类型,值为 List 类型(Book 类为图书类),然后使用嵌套循环遍历输出每个类别所对应的多个图书信息。具体的实现步骤如下。

1)创建表示图书类别的 Category 类,在该类中有两个属性:id 和 name,分别表示编号和类别名称,并实现了它们的 setXxx() 和 getXxx() 方法,具体内容如下:

public class Category {

private int id; // 类别编号

private String name; // 类别名称

public Category(int id, String name) {

this.id = id;

this.name = name;

}

public String toString() {

return "所属分类:" + this.name;

}

// 上面两个属性的setXxx()和getXxx()方法

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

2)创建表示图书明细信息的 BookInfo 类,在该类中包含 5 个属性:id、name、price、author 和 startTime,分别表示图书编号、名称、价格、作者和出版时间,同样实现了它们的 setXxx() 和 getXxx() 方法,具体内容如下:

public class BookInfo {

private int id; // 编号

private String name; // 名称

private int price; // 价格

private String author; // 作者

private String startTime; // 出版时间

public BookInfo(int id, String name, int price, String author, String startTime) {

this.id = id;

this.name = name;

this.price = price;

this.author = author;

this.startTime = startTime;

}

public String toString() {

return this.id + "\t\t" + this.name + "\t\t" + this.price + "\t\t" + this.author + "\t\t" + this.startTime;

}

// 上面5个属性的 setXxx() 和 getXxx() 方法

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.id = price;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public String getStartTime() {

return startTime;

}

public void setStartTime(String startTime) {

this.startTime = startTime;

}

}

3)创建 CategoryDao 类,在该类中定义一个泛型的 Map 映射,其键为 Category 类型的对象,值为 List 类型的对象,并定义 printCategoryInfo() 方法,用于打印类别和图书明细信息。具体代码如下:

public class CategoryDao {

// 定义泛型Map,存储图书信息

public static Map> categoryMap = new HashMap>();

public static void printDeptmentInfo() {

for (Category cate : categoryMap.keySet()) {

System.out.println("所属类别:" + cate.getName());

List books = categoryMap.get(cate);

System.out.println("图书编号\t\t图书名称\t\t图书价格\t\t图书作者\t\t出版时间");

for (int i = 0; i < books.size(); i++) {

BookInfo b = books.get(i); // 获取图书

System.out.println(b.getId() + "\t\t" + b.getName() + "\t\t" + b.getPrice() + "\t\t" + b.getAuthor()

+ "\t\t" + b.getStartTime());

}

System.out.println();

}

}

}

4)创建测试类 Test17,在该类中定义 4 个 Deptment 对象和 8 个 People 对象,并将 8 个 People 对象分成 4 组,存储到 4 个 List 集合中,然后将 4 个 Deptment 对象和 4 个 List 集合按照——对应的关系存储到 DeptmentDao 类中的 peoplesMap 映射中。最后调用 DeptmentDao 类中的 printDeptmentInfo() 方法打印类别及对应的图书信息。具体的代码如下:

public class Test17 {

public static void main(String[] args) {

Category category1 = new Category(1, "数据库"); // 创建类别信息

Category category2 = new Category(2, "程序设计"); // 创建类别信息

Category category3 = new Category(3, "平面设计"); // 创建类别信息

BookInfo book1 = new BookInfo(1, "细说 Java 编程", 25, "张晓玲", "2012-01-01"); // 创建图书信息

BookInfo book2 = new BookInfo(2, "影视后期处理宝典", 78, "刘水波", "2012-10-05"); // 创建图书信息

BookInfo book3 = new BookInfo(3, "MySQL 从入门到精通", 41, "王志亮", "2012-3-2"); // 创建图书信息

BookInfo book4 = new BookInfo(4, "Java 从入门到精通", 27, "陈奚静", "2012-11-01"); // 创建图书信息

BookInfo book5 = new BookInfo(5, "SQL Server 一百例", 68, "张晓玲", "2012-01-01"); // 创建图书信息

List pList1 = new ArrayList(); // 向类别 1 添加图书

pList1.add(book1);

pList1.add(book4);

List pList2 = new ArrayList(); // 向类别 2 添加图书

pList2.add(book3);

pList2.add(book5);

List pList3 = new ArrayList(); // 向类别 3 添加图书

pList3.add(book2);

CategoryDao.categoryMap.put(category1, pList1);

CategoryDao.categoryMap.put(category2, pList2);

CategoryDao.categoryMap.put(category3, pList3);

CategoryDao.printDeptmentInfo();

}

}

在该程序中,使用了泛型 List 和泛型 Map 分别存储图书类别和特定类别下的图书明细信息。从中可以看出使用泛型不仅减少了代码的编写量,也提高了类型的安全性。

运行该程序,输出的结果如下所示。

所属类别:平面设计

图书编号  图书名称  图书价格  图书作者  出版时间

2  影视后期处理宝典  78  刘水波  2012-10-05

所属类别:数据库

图书编号  图书名称  图书价格  图书作者  出版时间

1  细说 Java 编程  25  张晓玲  2012-01-01

4  Java 从入门到精通  27  陈奚静  2012-11-01

所属类别:程序设计

图书编号  图书名称  图书价格  图书作者  出版时间

3  MySQL 从入门到精通  41  王志亮  2012-3-2

5  SQL Server 一百例  68  张晓玲  2012-01-01

图书所属类别用mysql_Java图书信息查询相关推荐

  1. 1.16 项目实例:Java图书信息查询

    前面详细介绍了 Java 中各集合的使用,像 Set 集合和 List 集合等,另外,还结合泛型讲解了一些高级应用.在实际开发中,泛型集合是较常用的,一般定义集合都会使用泛型的形式来定义.本节将使用泛 ...

  2. Java Web实验程序设计——图书借阅网站的实现——图书信息

    预 习 报 告 实验题目:图书借阅网站的实现--图书信息 预习内容: Servlet的概述 Servlet 是使用Java 语言编写的运行在服务器端的程序.狭义的 Servlet 是指Java 语言实 ...

  3. JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。

    JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...

  4. 图书管理系统python怎么保存用户注册信息_Python实现图书管理系统

    Python实现图书管理系统 功能描述 1.界面分为两个部分,分别是(1)登录注册界面(2)图书管理系统界面 2.用户名和密码提前存储在列表中,输入用户名或密码错误提示重新输入,未注册的需要先注册帐号 ...

  5. 校园图书管理系统开发-中小学智能图书管理系统开发

    校园图书管理系统开发-中小学智能图书管理系统开发 <图书馆管理系统>是针对学校及上级主管部门对图书的管理而开发的校园信息化应用软件,系统采用了B/S架构及模块化设计模式,具有操作简单.功能 ...

  6. java计算机毕业设计飞机航班信息查询系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计飞机航班信息查询系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计飞机航班信息查询系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构 ...

  7. JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库 本源 ...

  8. Hive项目之谷粒影音:ETL清洗原数据、Hive统计视频观看数top10、视频类别top、视频观看数top其所属类别、类别流量top、类别热度top、上传视频用户数量top、类别视频观看top

    Hive实战之谷粒影音 项目数据下载地址: guiliVideo.zip谷粒影音项目视频表.用户表 包含内容: 两个文件夹 User表中的74702条数据 video表中5张表,每张表中都有多条数据 ...

  9. C语言编程图书销售系统,C语言图书销售的管理系统.doc

    目录 图书销售管理系统设计2 一.设计要求2 二.总体设计思路2 1.主要功能:系统主要包括八个功能模块.3 2.总体思路框图3 三.主要参数和函数4 1.全局变量4 2.主要函数5 四.程序调试及整 ...

  10. 图书管理分类统计c语言,图书管理完整系统(c语言).doc

    图书管理完整系统(c语言) 程序设计方法课程设计 问题提出: 设计一个图书馆的图书管理,具体要求如下: 1.录入新采购的图书信息,做成文件book.in,要求有良好的输入界面: 2.查询各种图书的基本 ...

最新文章

  1. 用“ul+li”及css制作韩国风格菜单
  2. 设计printf调试宏
  3. greendao引起的NoClassDefFoundError异常解决
  4. WCF 入门(23,24)
  5. ASP.NET Core 中间件Diagnostics使用
  6. 各高校寒假时间公布_高校放假哪家长?多所高校寒假时间公布!
  7. 计算机安全知识讲座,计算机学院安全知识讲座:防火防电防诈骗 人身安全记心间...
  8. [转贴]What's the Scroll Lock key on my computer for?
  9. Linux ftp 上传文件 提示 Permission denied 解决办法
  10. jquery读写cookie
  11. linux备份系统 硬盘数据,Linux怎么备份系统
  12. 门禁卡读写器—把手机秒变门禁卡与自己复制门禁卡
  13. Linux发行版Ubuntu教程
  14. 短网址还原 php,PHP将微博短地址还原为实际网址
  15. android 打开短信应用,通过短信打开手机应用
  16. manifest.json取消通讯录权限
  17. 喵懂区块链23期|9012年了,侧链还是一只又死又活的薛定谔猫?
  18. 通过ffmpeg实时读取宇视摄像头的高清帧流数据,并保存4张图片进行4合一照片的生成。
  19. 第四天:关看门狗、设置栈、控制icache、重定位、链接脚本
  20. IT公司、软件公司资质(转)

热门文章

  1. con和com开头单词
  2. python饼状图显示其比例_python可视化:matplotlib绘制的饼状图你了解吗?
  3. win10下使用pycharm实现基于pyg的cora+citeseer+pubmed数据集的JKNET模型测试
  4. html怎么设置字体的透明度,CSS字体透明度怎么设置?
  5. Linux下sh文件执行权限不够
  6. [Mongodb] 3.使用mongodb -----------使用compass
  7. 其实 Gradle Transform 就是个纸老虎 —— Gradle 系列(4)
  8. 简易开发的百度地图API
  9. 网易公开课中英字幕文件合并代码
  10. 位移的单位符号_位移传感器符号