Java Can';我看不到HashMap的内容
输出达到flag2,但我看不到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
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
,则不需要强制转换。