私は複数の著者によって書かれた記事のデータベースを作成しているので、著者と記事の2つのクラスがあります。Articleのコンストラクターは
Article(String title, String venue, Author[] authors, long year).
Authorオブジェクトには、作成者の名前が記載された文字列と、作成者が作成した記事のArrayListが含まれています。
だから、私は記事の配列を持っています、そして私は著者のArrayListを作成し、彼らが書いたすべての記事を追加しようとしています。
これは私のコードです:
for(int i=0; i<allarticles.length; i++) {
Author[] tempauthors = allarticles[i].getAuthors();
for (int j=0; j<tempauthors.length; j++) {
Author tempauthor = tempauthors[j];
if (authors.contains(tempauthor)) {
Author oldAuthor = authors.get(authors.indexOf(tempauthor));
if (!oldAuthor.hasArticle(allarticles[i]))
oldAuthor.addArticle(allarticles[i]);
} else {
if (!tempauthor.hasArticle(allarticles[i]))
tempauthor.addArticle(allarticles[i]);
authors.add(tempauthor);
}
}
}
そして、これがhasArticleメソッドです。publicboolean hasArticle(Article a){return articles.contains(a); }
提案されたようにequalsメソッドを変更しましたが、問題は、適切な量の記事で著者を取得することですが、最初の記事が重複しています。私が間違っていることは何ですか?Article.equals()メソッドもovverrideする必要がありますか?