2017-09-21 22 views
-1

私の本のリストを見て、その特定の著者によるすべての本を返そうとしています。私は空リストを取り戻しています。書籍を検索して著者(Java)

public ArrayList<Book> searchByAuthor(Author author) { 
    ArrayList<Book> bookList = new ArrayList<>(); 
    for (int i = 0; i < myBooks.size(); i++) { 
     if (myBooks.get(i).getMyAuthors().contains(author)) { 
      bookList.add(myBooks.get(i));  
     } 
    } 
    return bookList; 
} 



public ArrayList<Author> getMyAuthors() { 
     return myAuthors; 
    } 

メインはこのようにしています。

Author author = new Author("James"); 
System.out.println(bookCollections.searchByAuthor(author)); 
+2

'Author 'のequals実装はどのように見えますか? – azurefrog

+0

AuthorパラメータはgetMyAuthors()と同じか、新しいオブジェクトを作成しましたか? – ElectroWeak

+1

equalsのように見えますが実装されていません。これを参照してください [含まれて使用する](https://stackoverflow.com/questions/46332059/how-to-use-contains-on-custom-type-arraylist-in-java/46332573#46332573) – JavaProgrammer12

答えて

0

あなたのAuthorオブジェクトは値オブジェクトです。 Author.javaクラスにequalshashcodeメソッドの両方を実装する必要があります。

関連する問題