Pab*_*lgo 8 java hashmap data-structures
首先,我想明确表示我永远不会使用HashMap来处理需要在数据结构中有某种顺序的事情,并且这个问题是由我对Java HashMap实现的内部细节的好奇心所驱动的.
您可以在java文档中Object阅读有关该Object方法的信息hashCode.
我知道从那里hashCode上课的实施,如String和基本类型包装(Integer,Long一旦对象所包含的值给出,...)是可以预见的.例如,hashCode对String包含该值的任何对象的调用hello应始终返回:99162322
具有始终插入空Java HashMap的算法,其中Strings用作相同值的相同值的键.那么,它的元素在最后的顺序应该总是一样的,我错了吗?
由于具体值的哈希码始终相同,如果没有冲突,则顺序应该相同.另一方面,如果存在碰撞,我认为(我不知道事实)碰撞分辨率应该对完全相同的输入元素产生相同的顺序.
因此,具有相同元素的两个HashMap对象是否应该遍历(通过迭代器)给出相同的元素序列,这不是正确的吗?
据我所知,values()在HashMap执行map rehash之前,保持元素的顺序(假设我们称之为"order",迭代器返回的元素的顺序).我们可以通过提供capacity和/或loadFactor构造函数来影响该事件的概率.
尽管如此,我们绝不应该依赖这一陈述,因为内部实施HashMap不是其公共合同的一部分,并且将来可能会发生变化.
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |