5

要素が整数のペアで
あるHashSet実装が必要 です。Set s = { {1,2} , {3,4} , {1,4}}。ここで、セットsには3つの要素があります。

この種の2つのキーHashSetは、次のような多くの状況で必要になります。たとえば、データベースに、候補キーが2つの列の組み合わせであるリレーションがあります。
すでにこれを提供しているライブラリはありますか?そのような実装が利用できない場合、データ構造全体を最初から実装するのではなく、JavaでHashSet実装を拡張する方が簡単(かつ効率的ですか?)ですか?

4

3 に答える 3

9

この要件では、属性として2つの整数を使用してデータホルダーを作成し、equalsとハッシュコードの実装を提供します。次に、それらのオブジェクトをセットに入れます。

于 2010-04-10T10:15:43.617 に答える
1

そして、2つの要素を持つ配列をセットのメンバーとして配置することは機能しませんか?すなわち:

Set<int[]> s = new HashSet<int[]>();
s.add(new int[] {1,2});
s.add(new int[] {3,4});

CandidateKeyまたは、 2つのフィールドとカスタムequals()およびhashCode()メソッドを持つクラスを作成しますか?

とはいえ、HibernateやEclipseLinkのようなライブラリを使用するのではなく、オブジェクトリレーショナルマッピング(データベースからオブジェクトへのマッピング)を自分で処理したいですか?

于 2010-04-10T10:15:15.690 に答える
0

この場合、整数リストが機能します。

Set<List<Integer>> s = new HashSet<List<Integer>>();
s.add((List<Integer>)Arrays.asList(new Integer[] {2,4}));
s.add((List<Integer>)Arrays.asList(new Integer[] {2,4}));
s.add((List<Integer>)Arrays.asList(new Integer[] {2,5}));

ヘルパーはクラスhashCode() and equals()に組み込まれています。ArrayList

于 2019-11-23T03:34:24.903 に答える