java图书信息查询实例

KLQ 2020-08-27 14:04:43 java常见问答 5381

之前的话,给大家详细的介绍了Set集合List集合等,除此之外,还讲了一些高级应用等方面的内容,那么在实际的开发当中,泛型集合是用的比较的多的,那么下面的话就会为大家分享一下使用泛型集合来模拟实现某图书管理系统的查询功能的实例,一起来看看吧。

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

那么在这样的情况之下,就能够使用Map映射来存储类别和图书信息,其键为Category(类别)类型,值为List 类型(Book 类为图书类),之后,使用嵌套循环遍历输出每个类别所对应的多个图书信息。

下面是实现步骤:

首先创建表示图书类别的Category类,在这个类当中,有2个属性: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;
    }
}

创建表示图书明细信息的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;
    }
}

创建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();
        }
    }
}

创建测试类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 < 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图书信息查询示例你都了解了吗?更多java实例,请继续关注奇Q工具网来进行了解吧。

推荐阅读:

java泛型,泛型类详解

java泛型,泛型方法详解

java泛型,泛型的高级用法详解