java - 检索 HashMap 的迭代器会抛出强制转换异常

标签 java iterator hashmap

我编写了一些相对简单的代码,应该检索 HashMap 的迭代器并打印出键对值

我的问题是,当我去检索迭代器时,我抛出了这个异常。

Exception in thread "main" java.lang.ClassCastException: java.util.HashMap$Entry cannot be cast to java.lang.String
at Delete.main(Delete.java:25)

这是我的代码,我指出了第 25 行的位置:

    Map <String, UpdatablePage> contentMap = new HashMap <String, UpdatablePage>();
    contentMap.put( "test", new UpdatablePage() );

    for ( Iterator it = (Iterator) contentMap.entrySet().iterator(); it.hasNext(); )
    {
        String key = (String) it.next();  // LINE 25
        UpdatablePage value = contentMap.get(key);
        System.out.print( "Key=" + key + ", Value=" + value.toString() );
    }

PS,我曾尝试使用 Map.Entry 遍历 map ,但是当我将迭代器返回的值转换为 Map.Entry 时,我得到另一个转换异常,为什么?

// Error occurs when I do the following
Map.Entry pair = (Map.Entry) it.next();

最佳答案

在这一行中: for ( Iterator it = (Iterator) contentMap.entrySet().iterator(); it.hasNext(); )

entrySet() 应该是 keySet() - 您的迭代器返回每个条目,但是当您将它们转换为 String 时,我认为这是您想要的键。

关于java - 检索 HashMap 的迭代器会抛出强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062057/

相关文章:

dictionary - Julia - 迭代字典中的键组合

java - 如何使用 Map.merge 将计数器作为值递增?

java - 如果一对 HashMap 中的值与另一对中的键匹配,有什么方法可以解决吗?

java - Android 应用程序的 HashMap 替代品

java - 正则表达式不包含两个或多个连续的逗号或连字符,并且数字之间最多有一个连字符

c++ - 自定义迭代器运算符重载

java - EJB是用socket实现的吗?

c++ - 迭代多个序列。 C++11 中的容器

java - 在执行长程序期间动态更新 JTextArea 作为控制台输出?

java - Java 中可接受的避免多重继承缺失的方法