输出到达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);
}
}
}
问题出在哪里?
答案 0 :(得分:4)
您在实际密钥上调用toString
。当您尝试使用字符串获取它时,将失败。试试这个:
InetAddress key = iterator.next();
System.out.println("----flag2----");
String value = mp.get(key).toString();
System.out.println("----flag3----");
答案 1 :(得分:0)
对象的toString()方法与将对象转换为String的方式不同。
String key = iterator.next()
而不是String key = iterator.next().toString()
呢?