public assoc ( int shift, int hash, object key, object val, clojure.lang.Box addedLeaf ) : INode | ||
shift | int | |
hash | int | |
key | object | |
val | object | |
addedLeaf | clojure.lang.Box | |
Результат | INode |
public INode assoc(int shift, int hash, object key, object val, Box addedLeaf)
{
if (hash == _hash)
{
if (Util.equals(key, _key))
{
if (val == _val)
return this;
// note - do not set AddedLeaf, since we are replacing
else
return new LeafNode(hash, key, val);
}
else
{
// hash collision, same hash, different keys
LeafNode newLeaf = new LeafNode(hash, key, val);
addedLeaf.Val = newLeaf;
return new HashCollisionNode(hash, this, newLeaf);
}
}
else
return BitmapIndexedNode.create(shift, this, hash, key, val, addedLeaf);
}