Java查询图书信息
使用泛型集合來實現某圖書管理系統的查詢功能。
在圖書管理系統中為了方便管理圖書,將圖書劃分為幾個類別。每個類別下有很多圖書,每本圖書都有相對應的類別,這就具備了一對多的關系映射,即一個類別對應多本圖書。
在這種情況下就可以使用 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<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();}} }4 . 創建測試類 Test,在該類中定義 4 個 Deptment 對象和 8 個 People 對象,并將 8 個 People 對象分成 4 組,存儲到 4 個 List 集合中,然后將 4 個 Deptment 對象和 4 個 List 集合按照——對應的關系存儲到 DeptmentDao 類中的 peoplesMap 映射中。最后調用 DeptmentDao 類中的 printDeptmentInfo() 方法打印類別及對應的圖書信息。具體的代碼如下:
public class Test {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<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();} }在該程序中,使用了泛型 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總結
以上是生活随笔為你收集整理的Java查询图书信息的全部內容,希望文章能夠幫你解決所遇到的問題。