不,不会。那 不一定 是因为
String#hashpre; 但是因为a
HashMap会通过对最后16个16位进行XOR运算来重新哈希您的哈希码。
// this is re-hashing that is done internallystatic final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}
但是,即使那 会 增加碰撞,您也可能永远不会感觉到。对于将条目逐个放置(以链接的方式)的小桶/箱,
equals将被调用以获取您关心的 实际
条目。
如果某个仓位/存储桶达到某个阈值,它将被转换为
perfectly balanced tree node。这样的树中的搜索时间为
0(logn)。
即使 相同的条目在重新哈希 后 报告了相同的哈希码,如果出现平局,地图也必须决定哪个条目 较大 。
然后
Comparable#compareTo,如果您的键实现了Comparable
,它将尝试调用。如果他们不执行
Comparable,
System.identityHashpre将在平局的情况下决定。
从性能角度来说,由于所有这些内部因素,您的平均搜索时间将
O(1)在地图中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)