代码之家  ›  专栏  ›  技术社区  ›  Pasha

为什么我看不到调试器中的所有变量?

  •  2
  • Pasha  · 技术社区  · 6 年前

    Intellij IDEA debugger

    大家好!

    我试着调试 TreeSet<String> TreeMap<String> 但由于某种原因发现调试器不想显示给我 parent left / right

    我希望看到嵌套节点,但只显示键/值。 当然,如果我评估 this.left / this.right 它会把孩子给我的。

    另外,我注意到,当我们从客户机代码中获取元素时,我们会收到 String TreeMap.Entry 父母亲 / / 正确的 客户端代码中当前项目的名称?

    2 回复  |  直到 6 年前
        1
  •  3
  •   azro    6 年前

    你用的是一个 TreeMap TreeSet 有序树 不引用具有 父/左/右

       parent
         |
       node
      /    \
    left  right
    

    有序树 是一个 ordered set natural order 或者 custom comparator


    TreeSet Documentation :基于树映射的NavigableSet实现。根据使用的构造函数,可以使用元素的自然顺序或在设置的创建时间提供的比较器对元素进行排序。

    树图 有序树 您只需为每个键添加一个值

        2
  •  0
  •   Stuart Marks    6 年前

    一些IDE可以选择以更“友好”的方式显示集合的内容,而不是显示集合的内部数据结构。这可能是因为大多数程序员都是 使用 收藏,但不是 调试

    在NetBeans中,可以通过转到Java>Java调试器类别,并设置各种“格式化程序”,例如用于集合、映射和Map.Entry的格式化程序。

    在IntelliJ IDEA中,打开设置对话框,查看构建、执行、部署->调试器->数据视图->JAVA该选项称为“为集合类启用替代视图”(谢谢Matt Leidholm!)

    至于你问题的第二部分,如果你使用 TreeMap<K, V> K V 你正在使用的。这个 TreeMap.Entry 结构是对客户端保持私有的内部数据结构。客户端无法导航树结构(左/右/父)本身。意图 TreeMap 不是公开树结构,而是提供 抽象 显示其键和值的映射的,按键排序。

    你可以 Map.Entry entrySet() 树形图入口 物体。但是, 地图入口 不显示左/右/父对象;它只公开键和值。