ltf*_*hie 20 java eclipse debugging eclipse-plugin
我最近在使用IntelliJ几年后开始使用Eclipse.使用IntelliJ调试Map时,如果键或对象实现toString(),则会显示一个很好的键值字符串表示列表.
在Eclipse中,当我选择Show Logical Structure时,我看到如下内容:

此视图的问题是您需要展开每个条目以查看实际的键和值.如果你需要在超过10个元素的地图中找到某些东西,那就变得非常繁琐了.
我知道你可以制作自定义逻辑结构,Map的默认值看起来像这样:
return entrySet().toArray();
Run Code Online (Sandbox Code Playgroud)
有没有办法,通过自定义逻辑结构或插件来查看更有用的地图条目
ConcurrentHashMap$WriteThroughEntry (id=193)
Run Code Online (Sandbox Code Playgroud)
小智 57
您需要在逻辑结构之上创建详细格式化程序.在您提供的示例屏幕截图中,您的逻辑结构是ConcurrentHashMap $ WriteThroughEntry.您可以通过右键单击包含ConcurrentHashMap $ WriteThroughEntry的行并选择"添加详细格式化程序"来添加详细格式化程序.
我刚刚使用HashMap敲了这个例子.

java.util.HashMap$Entry // key + " - " + value
Run Code Online (Sandbox Code Playgroud)
为一个
HashMap<Integer,String> map;
Run Code Online (Sandbox Code Playgroud)
..我很快就填满了垃圾,我现在看到:

Bar*_*lom 10
好吧,我做了一个丑陋的解决方法.为Map设置此详细格式化程序:
StringBuilder detail = new StringBuilder();
int i = 0;
for (Object k : keySet()) {
detail.append((i++) + ": " + k + "\n");
}
return detail;
Run Code Online (Sandbox Code Playgroud)
然后在其输出中,找到具有所需键的条目的索引,然后在逻辑结构树中查找该条目.
它有效,但细节格式化程序本身有点慢,需要额外的步骤.此外,键没有排序,因此在大型地图中找到所需的键可能很困难(尽管理论上可以在格式化程序中进行排序).
| 归档时间: |
|
| 查看次数: |
21050 次 |
| 最近记录: |