-2

私の疑問は、次のように 2 つの変数 ID と名前を含む従業員クラスがあることです。

public class EmpBean {
  int id=10;;
  String name="uday";
}

次のように、このオブジェクトを HashMap に追加しました。

HashMap<EmpBean, EmpBean> hashMap= new HashMap<EmpBean, EmpBean>();
hashMap.put(empBean, empBean);

それで:System.out.println(hashMap.get(empBean).id);

出力:10;

get()のメソッドを呼び出すとhashMap、ハッシュコードが計算され、それにハッシュが適用され、バケットが見つかり、値が返されます。

ここまでは問題ありません。

get() メソッドを呼び出す前に、オブジェクトのハッシュ コードを変更したい場合。どのようにできるのか ?で試してみましたempBean.id=2000; が、ハッシュコードに変化はありません。

4

3 に答える 3

2

オブジェクトの値を変更する場合は、最初に HashMap から項目を削除してから、値を編集してから HashMap に再度挿入する必要があります。

于 2013-05-14T13:47:07.543 に答える
0

これは、Eclipse によって生成された hashCode メソッドになります。

@Override
public int hashCode()
{
    final int prime = 31;
    int result = 1;
    result = prime * result + id;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
}
于 2013-05-14T13:48:47.770 に答える