请解释为什么哈希图会给出不可预测的输出?它根据什么对元素进行排序?为什么当我们插入/删除新元素时它的输出会改变?
导入java.util.HashMap;
导入 java.util.Iterator;
导入java.util.Set;
public class Main6
{
public static void main(String[] args)
{
HashMap<String, String> hMap = new HashMap<String, String>();
hMap.put("10", "One");
hMap.put("11", "Two");
hMap.put("12", "Three");
hMap.put("17", "simran");
hMap.put("13", "four");
hMap.put("14", "five");
Set st = hMap.keySet();
//st.remove("12");
Iterator itr = st.iterator();
while (itr.hasNext())
System.out.println(itr.next());
// remove 2 from Set
//st.remove("12");
System.out.println(hMap.containsKey("12"));
}
}
HashMap
迭代顺序取决于对象哈希在存储桶之间的分布方式。当您添加新项目时,存储桶的数量可能会扩大,这将需要重新分配条目,这将重新排序所有内容。
此外,作为一项安全措施,当前的实施HashMap
有一个随机散列模式(“替代哈希” http://docs.oracle.com/javase/7/docs/technotes/guides/collections/changes7.html)在一定阈值后启用(jdk.map.althashing.threshold
)。这是为了阻止某类涉及尝试查找哈希冲突的拒绝服务攻击。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)