日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java圖書信息查詢

 碼農(nóng)9527 2021-09-24

    前面詳細介紹了Java中各集合的使用,像Set集合和List集合等,另外,還結合泛型講解了一些高級應用。在實際開發(fā)中,泛型集合是較常用的,一般定義集合都會使用泛型的形式來定義。本節(jié)將使用泛型集合來模擬實現(xiàn)某圖書管理系統(tǒng)的查詢功能。

    在圖書管理系統(tǒng)中為了方便管理圖書,將圖書劃分為幾個類別。每個類別下有很多圖書,每本圖書都有相對應的類別,這就具備了一對多的關系映射,即一個類別對應多本圖書。

    在這種情況下就可以使用Map映射來存儲類別和圖書信息,其鍵為Category(類別)類型,值為List<Book>類型(Book類為圖書類),然后使用嵌套循環(huán)遍歷輸出每個類別所對應的多個圖書信息。具體的實現(xiàn)步驟如下。

    1)創(chuàng)建表示圖書類別的Category類,在該類中有兩個屬性:id和name,分別表示編號和類別名稱,并實現(xiàn)了它們的setXxx()和getXxx()方法,具體內(nèi)容如下:

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;
 }
}123456789101112131415161718192021222324復制代碼類型:[java]

    2)創(chuàng)建表示圖書明細信息的BookInfo類,在該類中包含5個屬性:id、name、price、author和startTime,分別表示圖書編號、名稱、價格、作者和出版時間,同樣實現(xiàn)了它們的setXxx()和getXxx()方法,具體內(nèi)容如下:

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;
 }
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748復制代碼類型:[java]

    3)創(chuàng)建CategoryDao類,在該類中定義一個泛型的Map映射,其鍵為Category類型的對象,值為List<BookInfo>類型的對象,并定義printCategoryInfo()方法,用于打印類別和圖書明細信息。具體代碼如下:

public class CategoryDao { // 定義泛型Map,存儲圖書信息
 public static Map<Category, List<BookInfo>> categoryMap = new HashMap<Category, List<BookInfo>>(); public static void printDeptmentInfo() {  for (Category cate : categoryMap.keySet()) {
   System.out.println("所屬類別:" + cate.getName());
   List<BookInfo> 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();
  }
 }
}123456789101112131415161718復制代碼類型:[java]

    4)創(chuàng)建測試類Test17,在該類中定義4個Deptment對象和8個People對象,并將8個People對象分成4組,存儲到4個List集合中,然后將4個Deptment對象和4個List集合按照——對應的關系存儲到DeptmentDao類中的peoplesMap映射中。最后調(diào)用DeptmentDao類中的printDeptmentInfo()方法打印類別及對應的圖書信息。具體的代碼如下:

public class Test17 { public static void main(String[] args) {
  Category category1 = new Category(1, "數(shù)據(jù)庫"); // 創(chuàng)建類別信息
  Category category2 = new Category(2, "程序設計"); // 創(chuàng)建類別信息
  Category category3 = new Category(3, "平面設計"); // 創(chuàng)建類別信息
  BookInfo book1 = new BookInfo(1, "細說 Java 編程", 25, "張曉玲", "2012-01-01"); // 創(chuàng)建圖書信息
  BookInfo book2 = new BookInfo(2, "影視后期處理寶典", 78, "劉水波", "2012-10-05"); // 創(chuàng)建圖書信息
  BookInfo book3 = new BookInfo(3, "MySQL 從入門到精通", 41, "王志亮", "2012-3-2"); // 創(chuàng)建圖書信息
  BookInfo book4 = new BookInfo(4, "Java 從入門到精通", 27, "陳奚靜", "2012-11-01"); // 創(chuàng)建圖書信息
  BookInfo book5 = new BookInfo(5, "SQL Server 一百例", 68, "張曉玲", "2012-01-01"); // 創(chuàng)建圖書信息
  List<BookInfo> pList1 = new ArrayList<BookInfo>(); // 向類別 1 添加圖書
  pList1.add(book1);
  pList1.add(book4);
  List<BookInfo> pList2 = new ArrayList<BookInfo>(); // 向類別 2 添加圖書
  pList2.add(book3);
  pList2.add(book5);
  List<BookInfo> pList3 = new ArrayList<BookInfo>(); // 向類別 3 添加圖書
  pList3.add(book2);
  CategoryDao.categoryMap.put(category1, pList1);
  CategoryDao.categoryMap.put(category2, pList2);
  CategoryDao.categoryMap.put(category3, pList3);
  CategoryDao.printDeptmentInfo();
 }
}123456789101112131415161718192021222324復制代碼類型:[java]

    在該程序中,使用了泛型List和泛型Map分別存儲圖書類別和特定類別下的圖書明細信息。從中可以看出使用泛型不僅減少了代碼的編寫量,也提高了類型的安全性。

    運行該程序,輸出的結果如下所示。

所屬類別:平面設計
圖書編號  圖書名稱  圖書價格  圖書作者  出版時間2  影視后期處理寶典  78  劉水波  2012-10-05所屬類別:數(shù)據(jù)庫
圖書編號  圖書名稱  圖書價格  圖書作者  出版時間1  細說 Java 編程  25  張曉玲  2012-01-014  Java 從入門到精通  27  陳奚靜  2012-11-01所屬類別:程序設計
圖書編號  圖書名稱  圖書價格  圖書作者  出版時間3  MySQL 從入門到精通  41  王志亮  2012-3-25  SQL Server 一百例  68  張曉玲  2012-01-01

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多