2009-08-31 7 views
0

私は、オブジェクトのツリーがある場合、構造全体に対してメッセージダイジェストまたはハッシングを実行するライブラリを探しています。オブジェクトのツリーにメッセージダイジェストを実行するJavaライブラリがありますか?

は私がメソッドに渡されたオブジェクトが変更されていないか、入った場合は( - 不変ですどれも、このオブジェクトは、オブジェクトが含まれているので、上の他のオブジェクトを、含まれている)見てみたいです。

呼び出し中に構造内のオブジェクトの状態が変化するかどうかを確認する方法はありますか?

答えて

1

ツリー内のすべてのオブジェクトに対してhashCode()を実装できます。ルートオブジェクトのhashCodeが変更された場合、ツリー内のオブジェクトの状態が変更されたことがわかります。

+1

これを行うには、多くのクラスを変更する必要があります。また、オブジェクトを含むマップ(常に同じオブジェクトではない)もあります。私は、ツリーの一部を構成するすべてのオブジェクトが何であるかを見て、ハッシュコードの計算を追加するためにそれらをすべて変更するか、ツリーを使用するすべてのメソッドのコードがツリーに対して何をするかを調べる必要があります。また、リフレクションを使用してツリーから再帰的にデータを抽出することもできますが、私はより高速な方法を探しています。そのようなツールは存在しますか? –

0

変化を検出するためのハッシュを使用しての問題は、それが絶対的な「ノー」の答えを提供していないということです。 (おそらく)は変更されていないことがわかります。

変更が不足していても問題が解決しない場合は、ツリーをハッシュしてください。

ない場合は、他のオプションを検討する必要があると思いますが、私は何かを示唆することができる前に私はあなたの状況についての詳細を聞く必要があると思います。

0

これは、JREに付属の標準のMessageDigestとMD5を使用して行っています。衝突に関する

One link

私は同じMD5で2つのオブジェクトを持っているとき、私は彼らが潜在的に同じだ知っているので、私は完全な再帰的な比較を行います。それでも、衝突は起こりそうもなく、この技術を実装する価値があります。

関連する問題