当前位置: 首页 > 知识库问答 >
问题:

ArrayList图书类

龙珂
2023-03-14

创建一个Book类,下面是这些方法的作用。我目前被困在如何添加关于删除作者的名字和电子邮件的方法。我不能上传UML映像,因为我是新来的,没有足够的代表点。

  • 在构造函数中创建authors ArrayList的新实例。
  • 实现方法addAuthor(Author Author)将给定的Author实例添加到本书中。
  • 实现公共方法removeAuthorByName(String name),该方法使用给定的字符串搜索authors的数组列表。如果它找到一个名称与给定字符串匹配的Author对象,它会将对该对象的引用传递给私有方法removeAuthor(Author Author)。
  • 实现一个公共方法removeAuthorByEmail(String email),该方法使用给定的字符串搜索作者的数组列表。如果它发现一个Author对象的电子邮件与给定字符串匹配,它就会将对该对象的引用传递给私有方法removeAuthor(Author Author)。
  • 实现一个私有方法removeAuthor(Author Author),当给定对Author对象的引用时,该方法将从authors数组列表中删除对该对象的引用。
  • toString()方法将返回“book-name by n authors”,其中n是作者的数量。
  • printAuthors()方法将从ArrayList中打印所有作者的姓名。

我的代码:

class Book {

       private String    name;
       private double    price;
      // private Author[]  authors = new Author[5];
       //priavte authors =new ArrayList<Author>();
       private Map authors = new HashMap<String, Author>();
     //  private ArrayList<Author> authors = new ArrayList<Author>();
       private int       qtyInStock = 0;

       public Book(String name, double price) {
          this.name    = name;
          this.price   = price;
       }

       public Book(String name, double price, int qtyInStock) {
          this.name       = name;
          this.price      = price;
          this.qtyInStock = qtyInStock;
       }

       public String getName() {
          return this.name;
       }

       public double getPrice() {
          return this.price;
       }

       public Collection<Author> getAuthors() {
            return authors.values();
        }

       public void setPrice(double price) {
          this.price = price;
       }

       public int getQtyInStock() {
          return this.qtyInStock;
       }

       public void setQtyInStock(int qtyInStock) {
          this.qtyInStock = qtyInStock;
       }

       public void printAuthors() {
            authors.values().forEach(System.out::println);
        }

       public void addAuthor(Author author)
        {
            authors.put(author.getName(name), author);
        }
       public void removeAuthorByName(String name) {
            authors.remove(authors.get(name));
        }
       public void removeAuthorByEmail(String email){
           authors.remove(authors.get(email));
       }
       public void removeAuthor(String author){
            authors.remove(authors.get(author));
       } 

       public String toString() {
          return "'" + name +"' by " + authors + " authors";
       }   
    }

测试用例

Author a = new Author("Adam", "adam@gmail.com", 'm');
Author b = new Author("Ben", "ben@gmail.com", 'm');
Author c = new Author("Calvin", "calvin@gmail.com", 'm');
Author d = new Author("Danielle", "Danielle@gmail.com", 'f');
Book book1 = new Book("The House", 70.00, 5);
book1.addAuthor(a);
book1.addAuthor(b);
book1.addAuthor(c);
book1.addAuthor(d);
book1.removeAuthorByName("Ben");
System.out.println(book1);
book1.printAuthors();

输出:

The House by 3 authors
Adam
Calvin
Danielle

在此链接上添加了UML:https://gyazo.com/4afc1bafa03210044fafe06650859cb0

共有1个答案

林涵映
2023-03-14

我建议将arraylist更改为HashMap。

private ArrayList<Author> authors = new ArrayList<Author>();

private Map authors = new HashMap<String, Author>();

更改以下方法-

public Collection<Author> getAuthors() {
        return authors.values();
    }

   public void printAuthors() {
        authors.values().forEach(System.out::println);
    }
public void addAuthor(Author author)
    {
        authors.put(author.getName(), author);
    }
public void removeAuthorByName(String authorName) {
        authors.remove(authors.get(authorName));
    }
 类似资料:
  • Akka in Action, by Raymond Roestenburg and Rob Bakker, Manning Publications Co., ISBN: 9781617291012, est fall 2013 Akka Concurrency, by Derek Wyatt, artima developer, ISBN: 0981531660, est April 2013

  • 所以,我有一个名为的类,它有一个Arraylist。我必须制定方法来添加新书、删除一本书、获取所有书籍的价格等。我记下了一些,但我不知道如何添加一本带有ISBN、标题、年份、作者和价格的书? 这是类,我在其中存储ISBN、标题、年份、作者和价格。 这是带有ArrayList及其方法的已编辑的类。 这部分已经涵盖了吗?加上书号、书名、年份、作者和价格。

  • 雪梦图书是一款电子书阅读软件,主要收录使用gitbook制作的在线书籍。

  • 了解上节有关封装的知识后,本节通过完整的例子再次实现封装。要求编写表示图书的 Book 类,实现以下需求: 基本信息包括图书名称(bookName)、总页数(pagelbtalNum),其中页数不能少于 200 页,否则输出错误信息,并赋予默认值 200。 为各个属性设置赋值和取值方法。 具有 details() 方法,该方法在控制台输出每本图书的名称和总页数。 编写 BookTest 测试类,为

  • 图书管理 案例描述 随着科技的发展,计算机的普及,计算机软件在诸多领域都得到了广泛的应用。如今,管理系统不再是大公司的专利,许多小型的管理系统,如餐厅的餐饮管理系统、超市的收银系统、学校的学生选课系统等都已逐步普及到了我们的生活中。 本案例要求实现一个基于单链表的图书管理系统,该系统可实现图书信息的增加、浏览、查询、更新、删除这五项功能,并能将链表中存储的数据保存到文件中。 案例分析 本案例要求实

  • null 下面是构造函数: 问题:当试图为特定的行/行添加值时,我在下面的方法中得到以下错误:未为Integer类型定义方法add(int)