在java中将一本书的多个值添加到ArrayList中
我对如何将多个值添加到数组列表中有点困惑 我试图做的是将1个对象的多个值添加到数组列表中 例如: 我有一个名为books的数组列表,我正在尝试添加一本书,其中包含书名、作者、出版年份等等 这里是我尝试过的地方,但我不确定它是否正确,或者是否有更简单的方法在java中将一本书的多个值添加到ArrayList中,java,methods,arraylist,Java,Methods,Arraylist,我对如何将多个值添加到数组列表中有点困惑 我试图做的是将1个对象的多个值添加到数组列表中 例如: 我有一个名为books的数组列表,我正在尝试添加一本书,其中包含书名、作者、出版年份等等 这里是我尝试过的地方,但我不确定它是否正确,或者是否有更简单的方法 public class Book { public static ArrayList<Book> Books = new ArrayList<>(); public int isbn; pu
public class Book {
public static ArrayList<Book> Books = new ArrayList<>();
public int isbn;
public int yearPublished;
public String title;
public String author;
public String price;
public int noOfCopies;
Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
Book b2 = new Book(4321, 1994, "Book2", "bob.bob", "£12.00", 3);
public Book(int ISBN, int year, String ttle, String auth, String pri, int copies) {
this.isbn = ISBN;
this.yearPublished = year;
this.title = ttle;
this.author = auth;
this.price = pri;
this.noOfCopies = copies;
Books.add(this);
}
}
公共课堂教材{
public static ArrayList Books=new ArrayList();
公共国际标准书号;
公开出版的出版物;
公共字符串标题;
公共字符串作者;
公共字符串价格;
公共国际禁区;
书b1=新书(12341991,“书1”,“马克.马克”,“11.00英镑”,5);
图书b2=新书(43211994年,“图书2”,“鲍勃.鲍勃”,“12.00英镑”,3);
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份){
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
书。加上(这个);
}
}
是这样吗?谁能帮我一下吗您现在看到的任何错误的原因都是实例变量
Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
对于您创建的每个Book
实例,它将创建一个Book
实例,该实例将创建一个Book
实例,该实例将创建一个Book
实例,非常讨厌,最终导致堆栈溢出错误
删除那些b1
和b2
并从驱动程序的类外创建它们。我建议不要在book类内创建books对象(一本书不包含书籍。这没有意义)。我建议把书搬到自己的班级去。
这样做,您就有了:
书籍=新书
Book book1=新书()
Book book2=新书()
新增(第1册)
新增(第2册)
此公共静态ArrayList Books=new ArrayList()代码>不能在Book类中。相反,您应该创建某种容器类,例如公共类BookShelf
,它将成为这个图书数组中的一种图书
另一件坏事是,您正在POJO类中创建应用程序逻辑。像bookb1=newbook…
这样的语句应该在运行时类的方法中,而不是在POJO中。POJO应该只包含具有getter/setter的私有成员,并最终包含toString方法
此外,避免创建公共成员。它们应该是getter和setter的私有代码。您必须安排代码:
// Class Definition
public class Book {
// Member Variables
public int isbn;
public int yearPublished;
public String title;
public String author;
public String price;
public int noOfCopies;
// Constructor
public Book(int ISBN, int year, String ttle, String auth, String pri, int copies) {
this.isbn = ISBN;
this.yearPublished = year;
this.title = ttle;
this.author = auth;
this.price = pri;
this.noOfCopies = copies;
}
// Create a List of Books
public static List<Book> getBooks() {
Book b1 = new Book(1234, 1991, "Book1", "mark.mark", "£11.00", 5);
Book b2 = new Book(4321, 1994, "Book2", "bob.bob", "£12.00", 3);
List<Book> books = new ArrayList<Book>();
books.add(b1);
books.add(b2);
return books;
}
}
//类定义
公共课堂用书{
//成员变量
公共国际标准书号;
公开出版的出版物;
公共字符串标题;
公共字符串作者;
公共字符串价格;
公共国际禁区;
//建造师
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份){
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
}
//创建一个图书列表
公共静态列表getBooks(){
书b1=新书(12341991,“书1”,“马克.马克”,“11.00英镑”,5);
图书b2=新书(43211994年,“图书2”,“鲍勃.鲍勃”,“12.00英镑”,3);
List books=new ArrayList();
增加(b1);
新增(b2);
还书;
}
}
然后,您可以通过调用getBooks()函数来获取示例书:
List<Book> exampleBooks = Book.getBooks();
List exampleBooks=Book.getBooks();
图书列表应在与图书
不同的类中进行管理。例如,您可能有
public class Library
{
private ArrayList<Book> books = new ArrayList<Book>();
public Library()
{
Book b1 = new Book(...);
Book b2 = new Book(...);
books.add(b1);
books.add(b2);
}
}
public class Book
{
private int isbn;
private int yearPublished;
private String title;
private String author;
private String price;
private int noOfCopies;
public Book(int ISBN, int year, String ttle, String auth, String pri, int copies)
{
this.isbn = ISBN;
this.yearPublished = year;
this.title = ttle;
this.author = auth;
this.price = pri;
this.noOfCopies = copies;
}
// getter and setter for each field
}
公共类库
{
private ArrayList books=new ArrayList();
公共图书馆()
{
书b1=新书(…);
图书b2=新书(…);
增加(b1);
新增(b2);
}
}
公共课堂用书
{
私人国际标准书号;
出版的私人刊物;
私有字符串标题;
私有字符串作者;
私人字符串价格;
私家公寓;
公共图书(整数ISBN、整数年、字符串ttle、字符串授权、字符串pri、整数份)
{
这是isbn=isbn;
this.yearPublished=年;
this.title=ttle;
this.author=auth;
这个价格=pri;
this.noOfCopies=份数;
}
//每个字段的getter和setter
}
您是否收到StackOverflower错误?您应该遵守命名约定。使用Books.add(这个)
,我们的印象是,add
是类Books
的一个静态方法。删除b1和B2的定义谢谢,这很有帮助!:)谢谢你的帮助!这和上面的答案有帮助:)