特定の種類のオブジェクト (たとえば、 type MyClass
) の値をさまざまなMap<String, MyClass>
マップに格納するアプリケーションがあります。
アプリケーションは、
- 異なるマップから単一のコレクション (共用体) へのオブジェクト参照を取得します。
- 単一のコレクションを並べ替える (順序を適用するため)
- 連続するコレクション間の差を計算する (変更を検出するため)
- 各コレクションのすべてのオブジェクトから単一のハッシュ値を生成します
(統合された) コレクション内のオブジェクトの順序は重要です。
並べ替えを行うには、 を使用してオブジェクト (マップ値) を配置し、 をaddAll()
介しArrayList
て並べ替えCollections.sort()
ます。順序は で定義され、カプセル化された文字列フィールド (たとえば ) を比較することでインターフェイスMyClass
を実装します。Comparator
myField
並べ替えが完了すると、すべてのオブジェクトから一意の署名が作成されます。この署名は、同じ値を持つオブジェクトに対して同じである必要がありますmyField
。これは現在、文字列の連結 (toLowerCase()
とを使用StringBuilder
) によって行われ、結果の文字列をハッシュすることで、数千文字の長さにすることができます。
上記(コピー、ソート、比較、ハッシュ)を(一部またはすべて)実行するより効率的な方法はありますか?