Java Can';我看不到HashMap的内容

Java Can';我看不到HashMap的内容,java,hashmap,Java,Hashmap,输出达到flag2,但我看不到HashMap中的内容。代码是: public class traffic_analysis { static HashMap<InetAddress,Integer> mp=new HashMap<InetAddress, Integer>(); static void SrcCnt(InetAddress src_ip) { InetAddress SourceIP = src_ip; Sy

输出达到flag2,但我看不到HashMap中的内容。代码是:

public class traffic_analysis {


static HashMap<InetAddress,Integer> mp=new HashMap<InetAddress, Integer>();


    static void SrcCnt(InetAddress src_ip) {
        InetAddress SourceIP = src_ip;
        System.out.println(SourceIP);

        if (mp.get(SourceIP) == null){
            mp.put(SourceIP, 0);
            System.out.println("----MPIKE----");
        }else {
            mp.put(SourceIP,mp.get(SourceIP)+1);
            System.out.println("----MPIKE XANA----");
        }

        System.out.println(mp.toString());
    }


static void PrintMap() {
    System.out.println("----EIMAI EDW----");

    Iterator iterator = mp.keySet().iterator();

    while (iterator.hasNext()) {
         System.out.println("----flag----");
       String key = iterator.next().toString();
       System.out.println("----flag2----");
       String value = mp.get(key).toString();
       System.out.println("----flag3----");

       System.out.println(key + "blabla " + value);
    }
}


}
公共类流量分析{
静态HashMap mp=newhashmap();
静态无效SrcCnt(InetAddress src_ip){
InetAddress SourceIP=src_ip;
System.out.println(SourceIP);
if(mp.get(SourceIP)==null){
mp.put(SourceIP,0);
System.out.println(“--MPIKE-->”);
}否则{
mp.put(SourceIP,mp.get(SourceIP)+1);
System.out.println(“--MPIKE XANA-->”);
}
System.out.println(mp.toString());
}
静态void PrintMap(){
System.out.println(“--EIMAI-EDW-->”);
迭代器迭代器=mp.keySet().Iterator();
while(iterator.hasNext()){
System.out.println(“----标志----”;
字符串键=迭代器.next().toString();
System.out.println(“----flag2----”;
字符串值=mp.get(key.toString();
System.out.println(“--flag3--”);
System.out.println(键+“blabla”+值);
}
}
}

问题出在哪里?

您正在调用实际键上的
toString
。当您尝试使用字符串获取它时,将失败。请尝试以下方法:

InetAddress key = iterator.next();
System.out.println("----flag2----");
String value = mp.get(key).toString();
System.out.println("----flag3----");

您正在按实际键调用
toString
。当您尝试使用字符串获取它时,将失败。请尝试以下方法:

InetAddress key = iterator.next();
System.out.println("----flag2----");
String value = mp.get(key).toString();
System.out.println("----flag3----");
对象的toString()方法的作用与将对象强制转换为字符串不同

关于
String key=iterator.next()
而不是
String key=iterator.next().toString()

对象的toString()方法与将对象强制转换为字符串的作用不同


那么
String key=iterator.next()
而不是
String key=iterator.next().toString()

会发生什么呢?到“flag3”了吗?到“布拉布拉”了吗?它会抛出异常吗?那么会发生什么呢?到“flag3”了吗?到“布拉布拉”了吗?它是否引发异常?否,
Map.get
方法接受一个
对象
。(遗留原因iirc。)@DHall:No,Map.get接受对象,而不是K。关于为什么会出现这种情况还有其他问题:)InetAddress key=(InetAddress)iterator.next();System.out.println(“----flag2----”;字符串值=mp.get(key.toString();System.out.println(“--flag3--”);现在没事了。。泰@user758084:如果将
迭代器
声明为
迭代器
,则不需要强制转换。否,
Map.get
方法使用
对象
。(遗留原因iirc。)@DHall:No,Map.get接受对象,而不是K。关于为什么会出现这种情况还有其他问题:)InetAddress key=(InetAddress)iterator.next();System.out.println(“----flag2----”;字符串值=mp.get(key.toString();System.out.println(“--flag3--”);现在没事了。。泰@user758084:如果您将
iterator
声明为
iterator
,则不需要强制转换。