我正在尝试将以下书籍对象添加到 TreeSet 中。但是,当我调试代码时,它说该集合的大小为 1 并且仅包含添加的第一个对象(book1)。当我注释掉book1时,只添加了book2等等。
为什么JVM只能识别一个对象?
代码:
public static void main(String[] args) {
Set<Book> bookSet = new TreeSet<Book>();
Book book1 = new Book("Digital Fortress", "Dan Brown", "St. Martins Press", 1998);
Book book2 = new Book("Angels and Demons", "Dan Brown", "Pocket Books", 2000);
Book book3 = new Book("Deception Point", "Dan Brown", "Pocket Books", 2001);
Book book4 = new Book("The Davinci Code", "Dan Brown", "DoubleDay", 2003);
Book book5 = new Book("The Lost Symbol", "Dan Brown", "DoubleDay", 2009);
Book book6 = new Book("Inferno", "Dan Brown", "DoubleDay", 2013);
bookSet.add(book1);
bookSet.add(book2);
bookSet.add(book3);
bookSet.add(book4);
bookSet.add(book5);
bookSet.add(book6);
System.out.println(bookSet);
}
这是到目前为止的完整代码(它必须全部位于同一个类中):
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class Book implements Comparable<Book> {
String title;
String author;
String publisher;
int publicationYear;
List<String> authorList = new ArrayList<String>();
public Book(String title, String author, String publisher, int publicationYear){
this.title = title;
this.author = author;
this.publisher = publisher;
this.publicationYear = publicationYear;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<String> getAuthorList() {
return authorList;
}
public void setAuthorList(List<String> authorList) {
this.authorList = authorList;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public int getPublicationYear() {
return publicationYear;
}
public void setPublicationYear(int publicationYear) {
this.publicationYear = publicationYear;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String toString(){
return "Book Title: " + getTitle() + "\nAuthor Name: " + getAuthor() + "\nPublisher: " + getPublisher() + "\nYear of Publication: " + getPublicationYear();
}
public static void main(String[] args) {
Set<Book> bookSet = new TreeSet<Book>();
Book book1 = new Book("Digital Fortress", "Dan Brown", "St. Martins Press", 1998);
Book book2 = new Book("Angels and Demons", "Dan Brown", "Pocket Books", 2000);
Book book3 = new Book("Deception Point", "Dan Brown", "Pocket Books", 2001);
Book book4 = new Book("The Davinci Code", "Dan Brown", "DoubleDay", 2003);
Book book5 = new Book("The Lost Symbol", "Dan Brown", "DoubleDay", 2009);
Book book6 = new Book("Inferno", "Dan Brown", "DoubleDay", 2013);
bookSet.add(book1);
bookSet.add(book2);
bookSet.add(book3);
bookSet.add(book4);
bookSet.add(book5);
bookSet.add(book6);
System.out.println(bookSet);
}
@Override
public int compareTo(Book o) {
// TODO Auto-generated method stub
return 0;
}
}
最佳答案
所有书籍都彼此相等(通过返回 0 即可看出)。 Set
不能包含重复项,因此这就是为什么只添加一本书(第一本书)
@Override
public int compareTo(Book o) {
// TODO Auto-generated method stub
return 0;
}
您需要填写方法的详细信息。负数表示这本书
小于o
,正数则反之
关于java - 我的 Treeset 仅添加 1 个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40383909/