-1

请解释为什么哈希图会给出不可预测的输出?它在什么基础上对元素进行排序?为什么当我们插入/删除一个新元素时它的输出会发生变化?导入 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"));
        }
    }
4

1 回答 1

1

HashMap迭代顺序取决于对象哈希在桶之间的分布方式。当您添加一个新项目时,桶的数量可能会增加,这将需要重新分配条目,这将重新排序所有内容。

此外,作为一种安全措施,当前的实现HashMap具有随机散列模式(“替代散列”),该模式在某个阈值(jdk.map.althashing.threshold)之后启用。这是为了阻止某种类型的拒绝服务攻击,这些攻击涉及尝试查找哈希冲突。

于 2013-08-25T17:54:37.053 回答