2016-04-05 12 views
0

javaのHashmapオブジェクトのキーとしてヌルオブジェクトを1つだけ追加できると読んでいました。しかし、私がどのクラスのオブジェクトを作成し、それをnullとして割り当て、そのオブジェクトのハッシュコードを印刷しようとすると、nullポインタの例外が返されます。次に、hashmapがそのヌルオブジェクトのハッシュ値をキーとしてどのように計算し、どのようにバケットに入れますか?javaのHashmapのヌル値

答えて

2

キーがnull値がインデックス0

if (key == null) 
    return putForNullKey(value); 
1

でバケツに入れている場合だけのHashMapの実装を簡単にのぞき見を持っていたし、次のようにそれがキーのハッシュ値を決定します。

static final int hash(Object key) { 
    int h; 
    return (key == null) ? 0 : (h = key.hashCode())^(h >>> 16); 
} 

したがって、nullキーの場合、ハッシュ値は常に0であり、値のnullのキーが1つしかないことも説明しています。

これはあなたの質問にお答えします。