3

多数のオブジェクトに検索メソッドを実装する必要があります。戦略は次のとおりです。たとえば、2 つのクラスがあります。

A{
String a1,
String a2,
...
}
and
B{
String b1,
String b2,
...
}

ArrayLists各タイプのオブジェクトを持つ2 つ。のオブジェクト
を見つける必要があります。何も見つからない場合は、オブジェクトを見つける必要があります.. (他のタイプの属性が存在する可能性があるため、ここでは値ベースの等価性を表します)AA.a1 == B.b1AA.a2 == B.b2==

これをできるだけ速くする最善の方法は何ですか? これまでに (配列を繰り返し処理する以外に) 考えられる唯一のことは、属性値をキーとして、オブジェクト参照を値として持つ多数の HashMap を作成することです。

これを解決するより良い方法はありますか?

4

3 に答える 3

1

私が思うに、これはシングルループで実現できます。反復中に、他の条件が真であるかどうかも確認し、そのようなオブジェクトを格納します。見つからないA.a1.equals(B.b1)場合A.a2.equals(B.b2)は、追加のループは必要ありません。

 initalize object to store A.a2.equals(B.b2)
 for(size)
  { 
     if(A.a1.equals(B.b1))
      {
       //Found break;
      }
     else if(A.a2.equals(B.b2))
       {
        //Store this since if we end up not finding then we can use this
       }
  }
于 2012-10-30T09:55:16.480 に答える
1

HashMap の方法を選択する必要があります。ハッシュがあるため、ルックアップは非常に効率的です。また、参照のみが異なるマップに格納されるため、メモリのオーバーヘッドは劇的ではありません。

于 2012-10-30T09:43:18.157 に答える
-1

Apache BeanUtilsを最大限に掘り下げてみましたが、これしか見つかりませんでした。クラスの各フィールドでリフレクション API/getter を使用する代わりに、Bean 全体を一度にマップにロードすることを試みることができます。

BeanUtils.describe(Object bean) - を返しますMap

于 2012-10-30T09:49:57.750 に答える