以下是我照书上编写的例子
import java.util.HashMap;
import java.util.Map;
import java.util.Set;import sun.text.CompactShortArray.Iterator;public class Map01 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("123", "tome");
map.put("2123", "kome");
map.put("3312", "tofme");
map.put("4123", "tofe");
map.put("51231", "tiem");
map.put("612312", "key"); Set keySet = map.keySet();
Iterator iterator =  (Iterator) keySet.iterator();
while (iterator.hasNext()) {
char key = iterator.next();
System.out.println(key);
}
}}
可运行起来出现下列的错误
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap$KeyIterator
at Map01.main(Map01.java:23)
我以将23行标出,我是个初学者,我检查了半天也没有检查出错误来,请哪位高手指教以下啊。

解决方案 »

  1.   

    Iterator<Character> iterator =   keySet.iterator(); 或者
    在char key = ((Character)iterator.next()).charValue();
      

  2.   

    import sun.text.CompactShortArray.Iterator; 
    引入的错误...
      

  3.   

    引入语句如下:
    java.util.Iterator  这个是集合类的迭代器接口
      

  4.   

    import java.util.Iterator;恩,就这错
      

  5.   

    导入的包出现错误,不应该导入sun.text.CompactShortArray.Iterator
    而应该是java.util.Iterator
    还有就是char key = iterator.next(); 
    是String而不是char
      

  6.   

    补充一点,因为iterator.next()的返回类型是 Java Collections Framework 中的 Enumeration,我们称之为枚举(枚举可以理解为Object类型),所以要转换为String(这是引用的多态)
    import java.util.HashMap;
    import java.util.Iterator;//增加Iterator包
    import java.util.Map;
    import java.util.Set;//import sun.text.CompactShortArray.Iterator;//这里包的导入错误!public class Map01 {
    public static void main(String[] args) {
    Map map = new HashMap();
    map.put("123", "tome");
    map.put("2123", "kome");
    map.put("3312", "tofme");
    map.put("4123", "tofe");
    map.put("51231", "tiem");
    map.put("612312", "key"); Set keySet = map.keySet();
    Iterator iterator = (Iterator) keySet.iterator();
    while (iterator.hasNext()) {
    //char key = iterator.next();//这里的错误最为明显,不该犯的的错噢!
    String key = (String) iterator.next();
    System.out.println(key);
    }
    }}