idea,hashmap调试不显示空数组

idea中,HashMap调试中,空数组不显示,该怎么让空数组显示出来,请问该如何设置?

img

有没有可能是你打开方式不对

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/365893
  • 你也可以参考下这篇文章:什么时候使用HashMap?它有什么特点?
  • 除此之外, 这篇博客: hashMap的理解中的 一、HashMap中的“死锁”是怎么回事 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    HashMap是非线程安全,死锁一般都是产生于并发情况下。我们假设有二个进程T1、T2,HashMap容量为2,T1线程放入key A、B、C、D、E。在T1线程中A、B、C Hash值相同,于是形成一个链接,假设为A->C->B,而D、E Hash值不同,于是容量不足,需要新建一个更大尺寸的hash表,然后把数据从老的Hash表中 迁移到新的Hash表中(refresh)。这时T2进程闯进来了,T1暂时挂起,T2进程也准备放入新的key,这时也 发现容量不足,也refresh一把。refresh之后原来的链表结构假设为C->A,之后T1进程继续执行,链接结构 为A->C,这时就形成A.next=B,B.next=A的环形链表。一旦取值进入这个环形链表就会陷入死循环。

    解决办法:
    使用线程安全的ConcurrentHashMap

  • 以下回答来自chatgpt:

    问题标题: 如何在IntelliJ IDEA的HashMap调试中显示空数组?

    问题内容: 当我在使用IntelliJ IDEA进行HashMap调试时,发现空数组并未显示出来。我想知道应该如何设置IDEA以便在调试时能够显示空数组。请问有什么方法可以实现这一目标?

    解决方案: 目前的IDEA版本(2021.2.1)中,并没有提供直接显示空数组的选项。但是我们可以通过以下两种方法间接实现该目标:

    方法1: 使用自定义的toString()方法 步骤: 1. 在你的HashMap类中,对于数组的toString()方法进行重写并返回一个自定义的字符串。可以参考下面的代码:

    @Override
    public String toString() {
        if (isEmpty()) {
            return "[]"; // 如果HashMap为空则直接返回空数组字符串
        }
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (Entry<K, V> entry : entrySet()) {
            sb.append(entry.getKey());
            sb.append('=');
            sb.append(entry.getValue());
            sb.append(', ');
        }
        sb.append(']');
        return sb.toString();
    }
    
    1. 在HashMap类调试时,将该类设为断点,然后通过调试器查看该类的toString()方法的返回值,即可显示HashMap的内容,包括空数组。

    方法2: 使用自定义的Watch表达式 步骤: 1. 在HashMap类调试时,打开Watch视图。 2. 添加一个新的自定义Watch表达式,并将表达式设置为自定义的字符串,以显示HashMap的内容,包括空数组。例如,可以使用以下表达式:

    isEmpty() ? "[]" : toString()
    
    1. 调试器会根据条件判断是否为空数组,如果为空,则显示"[]",否则调用toString()方法显示HashMap的内容。

    注意事项: - 这两种方法都是间接显示空数组的方式,通过返回自定义的字符串来替代实际的空数组。 - 在使用自定义的toString()方法时,需要确保其他功能正确,并且该方法不会影响已有的功能和性能。 - 在Watch表达式中使用自定义的字符串时,需要确保该字符串能正确地表示HashMap的内容,并且不会引起其他问题。

    如果以上方法无法满足你的需求,建议考虑使用其他工具或自定义代码来实现特定的调试需求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^