import java.util.*;
public class MapTest {
public static void main(String[] args) {
HashMap map=new HashMap();
Random ran=new Random();
for(int i=0;i<50;i++){
int k=ran.nextInt(41);
if(map.get(new Integer(k))==null){
map.put(map.get(new Integer(k)),new Integer(1));
}
else{
Integer d=(Integer)(map.get(map.get(new Integer(k))));
Integer e=new Integer(d.intValue()+1);
map.put(map.get(new Integer(k)),e);
}
}
Set set=map.keySet();
for(Iterator iter=set.iterator();iter.hasNext();){
String key=(String)iter.next();
String value=(String)map.get(key);//第20行异常也就是此处
System.out.println(key+":"+value);
}
}
}
-----------------------------------------------------
执行以上代码会抛出以下异常  是什么意思 什么原因啊
————————————————————————————
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at test2.MapTest.main(MapTest.java:20)

解决方案 »

  1.   

    你map里放的都是Integer....直接强转String肯定错咯String value=String.valueOf(map.get(key));
      

  2.   

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Random;
    import java.util.Set;
    public class test {
    /**
     * @param args
     */
    public static void main(String[] args) {
            HashMap map=new HashMap();
            Random ran=new Random();
            for(int i=0;i<50;i++){
                int k=ran.nextInt(41);
                if(map.get(new Integer(k))==null){
                    map.put(map.get(new Integer(k)),new Integer(1));
                }
                else{
                    Integer d=(Integer)(map.get(map.get(new Integer(k))));
                    Integer e=new Integer(d.intValue()+1);
                    map.put(map.get(new Integer(k)),e);
                }
            }
            Set set=map.keySet();
            for(Iterator iter=set.iterator();iter.hasNext();){
                String key=(String)iter.next();
                String value=String.valueOf(map.get(key)) ;//第20行异常也就是此处
                System.out.println(key+":"+value);
            }
        }}