Javaの:Aが含まれているクラスBを含むクラスAのハッシュコード

Wildrat:

私のクラスでハッシュコード機能を実現しながら、私は問題を抱えています。タイトルで説明したように、私は2つのクラスがあります。

  • クラスAは、学校のテストを表し、そう、それはいくつかの属性(すなわち対象、マーク、およびテストを受けた学生を表すクラスのインスタンス)が含まれています。

  • あなたが推測できるように、クラスBは、学生を表す1つです。これは、いくつかの属性(すなわち、名前、住所、年齢、など)と、複数のAクラスのインスタンスを格納するArrayList(学生は多くのテストを取ることができます)があります。

私の問題があり来る、私は両方のクラス内のhashCode機能を実装するように求めています。ハッシュコードIの使用は、それのタイプ(すなわち、乗算弦楽のため31、INT 17、オブジェクト、などのため13による)に依存する整数を乗じたすべての属性のハッシュコードを、追加された私が教えられてきた1、です。

私はAクラスのハッシュコードを呼び出す場合しかし、その後、Bクラスのハッシュコードが呼び出され、そしてそれは、クラスのハッシュコードコールバックします。

どのように私はこのループを取り除くのですか?私は、テストクラス(B)の学生のクラス(A)ハッシュコードのハッシュコードの呼び出しを取り除くことを考えました。しかし、他のオプションがあるのですか?それは私が私が理解するのは難しいにそれを作るdidntの願って、助けを得るために、私の最初の試みです。

彼らは次のとおりでした:

あなたの問題を回避する1つの方法は、抽象化を変更することです。学校のテスト(「クラスA」)を表すクラスは、学生のインスタンス(「クラスB」)の参照を保持する必要はありません。その代わり、その学生(学生のいくつかのユニークな性質)のいくつかの識別子を保持することができます。

もう一つの方法:私はそれは、学生は、彼らが取るのテストで定義されていないと言うことは理にかなっていると信じています。この手段は、テストのリストの以外のすべてのプロパティが等しい2人の生徒のインスタンスは、同じ学生に言及していること。これは、テストのリストが参加しないことを意味hashCode()し、equals()方法。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=137482&siteId=1