【问题标题】:Can't see the contents of the HashMap看不到HashMap的内容
【发布时间】:2011-05-17 20:03:05
【问题描述】:

输出达到 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);
    }
}


}

问题出在哪里?

【问题讨论】:

  • 那么会发生什么?它到达“flag3”吗?它会变成“blabla”吗?它会抛出异常吗?

标签: java hashmap


【解决方案1】:

您在实际密钥上调用toString。当您尝试使用 string 获取它时,将会失败。试试这个:

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

【讨论】:

  • 不,Map.get 方法采用Object。 (遗留原因iirc。)
  • @DHall:不,Map.get 需要 Object,而不是 K。关于为什么会这样还有其他问题 :)
  • InetAddress key = (InetAddress) iterator.next(); System.out.println("----flag2----");字符串值 = mp.get(key).toString(); System.out.println("----flag3----");现在好了.. TY!!
  • @user758084:如果您将iterator 声明为Iterator&lt;InetAddress&gt;,则不需要演员表。
【解决方案2】:

对象的 toString() 方法与将对象转换为字符串不同。

String key = iterator.next() 而不是String key = iterator.next().toString() 呢?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多