gpt4 book ai didi

java - ArrayList书籍类

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:10 25 4
gpt4 key购买 nike

创建一个 Book 类,下面是方法的作用。我目前陷入如何添加有关按姓名和电子邮件删除作者的方法的问题。我无法上传 UML 图像,因为我是新人并且没有足够的代表点。

  • 在构造函数中创建作者 ArrayList 的新实例。
  • 实现方法 addAuthor(Author writer) 将给定的 Author 实例添加到这本书中。
  • 实现一个公共(public)方法removeAuthorByName(String name),它使用给定的String来搜索作者ArrayList。如果它找到名称与给定字符串匹配的 Author 对象,则会将此对象的引用传递给私有(private)方法removeAuthor(Authorauthor)。
  • 实现一个公共(public)方法removeAuthorByEmail(String email),该方法使用给定的String来搜索作者ArrayList。如果它找到一个 Author 对象,其电子邮件与给定的 String 匹配,则会将此对象的引用传递给私有(private)方法removeAuthor(Authorauthor)。
  • 实现一个私有(private)方法removeAuthor(Author writer),当给定一个Author对象的引用时,该方法将从authors ArrayList中删除对该对象的引用。
  • toString() 方法应返回“n 位作者的书名”,其中 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

最佳答案

我建议将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));
}

关于java - ArrayList书籍类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com