アプリケーションにこのタイプがあるとしましょう:
public class A {
public int id;
public B b;
public boolean equals(Object another) { return this.id == ((A)another).id; }
public int hashCode() { return 31 * id; //nice prime number }
}
そして構造。今、私はタイプのオブジェクトを持っていて、次のことをしたいと思っています:Set
<A
>A
- my
A
がセット内にある場合は、そのフィールドb
を更新して my オブジェクトに一致させます。 - それ以外の場合は、セットに追加します。
そのため、そこにあるかどうかを確認するのは簡単です ( contains
)。また、セットに追加するのも簡単です。私の質問は次のとおりです。オブジェクトを更新するためのハンドルを取得するにはどうすればよいですか? インターフェイスにはメソッドSet
がありませんget
。私が考えることができる最善の方法は、セット内のオブジェクトを削除して、私のものを追加することでした。もう 1 つの、さらに悪い方法は、イテレータを使用してセットをトラバースして、オブジェクトを見つけようとすることです。
より良い提案を喜んでお受けします...これには、他のデータ構造の効率的な使用が含まれます。
ユヴァル=8-)
編集:ご回答いただきありがとうございます...残念ながらMap
、この目的のためだけにコレクションのタイプを根本的に変更することは少し極端になるため、ここで a を使用することを提案する最良の回答を「受け入れる」ことはできません(このコレクションは既に Hibernate を介してマップされています...)