java - 我的 Treeset 仅添加 1 个类对象

标签 java collections treeset

我正在尝试将以下书籍对象添加到 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/

相关文章:

java - 创建具有样式但没有属性的 TextView(在代码中)

java集合: Filter using mapped values and then return to initial values

html - 如何在 Jekyll for Github Pages 的自定义集合文件夹中添加多个内容?

java - 树集以降序排列元素

java - 如何反转 TreeSet 实例中数据的顺序?

java - 使用 ListModel 来隐藏 TreeSet

java - Array.sort() 是否实现了可比较?当我查看 Array 类时,它没有,那么这里的排序是如何工作的呢?

java - 无法使用apachestorm消费kafka消息

java - 从另一个 Java 应用程序中查找并终止特定的 Java 进程

c# - 与 Intersect() 相反