改成:
while(iterator.hasNext()){
      System.out.println(iterator.next() );
      //System.out.println(iterator.next().toString());//两个都可以用,随便
    }
你放进HashMap的就不是一个String
取出来的肯定不可能转化成正常的String对象
但由于iterator的next方法返回Object,所以你可以调用toString方法
(不写toStringjava会自动帮你调用的)

解决方案 »

  1.   

    System.out.println( iterator.next());
      

  2.   

    System.out.println( (String)iterator.next() );
    这一句,不能这么强制转换的
    应该用
          System.out.println( iterator.next().toString() );
      

  3.   

    System.out.println( (String)iterator.next() ); 中不能实现强制转换成String
    改成
    System.out.println( iterator.next().toString());
      

  4.   

    while(iterator.hasNext()){
          System.out.println( iterator.next() );
        }不是String型啊,怎么能强制转换呢?为什么要用HashMap,HashMap体现在键值对的。
      

  5.   

    System.out.println( (String)iterator.next() );改成
    System.out.println( iterator.next() );
      

  6.   

    iterator中的不是你想象的压进去的“new String()”,既然hashmap中既有“键”又有“值”,你怎么能想当然的认为.next()返回的就是“值”而不是“键”呢,其实他返回的是hashmap的一个内部类Entry,里面既包括“键”又包括“值”。Entry的toString()是这样的
            public String toString() {
                return getKey() + "=" + getValue();
            }
    另外,不主张显式的写出toString,当然在这里不会出问题,但是如果在其他情况下,比如说List取出来的是null,那就会出NullPointerException了
      

  7.   

    To binny:谢谢帮助,问题解决了,正如你所描述的,把
    Iterator iterator = tempMap.entrySet().iterator();改成:
    Iterator iterator = tempMap.values().iterator();
    就解决了我的问题!