0

我正在为 hashmap 使用当前的详细格式化程序

key + "-" + value

当我调试代码时..

import java.util.HashMap;


public class Test1
{
    public static void main(String[] args)
    {
        HashMap<String, Integer> wordcount = new HashMap<String, Integer>();       

        wordcount.put("foo", 1);
        wordcount.put("bar", 1);

        System.out.println("test"); // set a breakpoint here

    }
}

Eclipse 在变量选项卡中说..

Detail formatter error:
    key cannot be resolved to a variable
    value cannot be resolved to a variable  

实际上,当断点停止在 ... 时,我想查看 HashMap 的值,System.out.println不仅仅是wordcount HashMap<K,V> (id=16),而是它的内容。

4

1 回答 1

1

详细格式化程序用于为您提供对象(及其属性)的字符串表示,而不是局部变量或方法参数。HashMap 没有“键”和“值”字段,因此您的代码实际上没有意义。

我猜您在另一个调试会话期间将详细格式化程序与一些局部变量(在 HashMap.put() 之类的方法中)混淆了。

要获得一些正常工作的代码,首先在像 put() 这样的 HashMap 方法中设置断点并在遇到断点时实现详细格式化程序可能是最简单的方法。这样您就可以直接验证您的新代码。

HashMaps 的示例详细格式化程序:

StringBuilder buffer = new StringBuilder();
buffer.append("entries: ").append(this.size()).append("\n");
for (Map.Entry entry : entrySet()) {
    buffer.append("key: ").append(entry.getKey().toString()).append(", value:").append(entry.getValue().toString()).append("\n");
}
return buffer.toString();

这将为您的示例提供以下输出:

entries: 2
key: foo, value:1
key: bar, value:1
于 2012-08-02T16:03:56.733 回答