Java 对象图验证

标签 java recursion

我有java对象Map<Integer, SortedMap<Integer, Pair<Integer, String>>>数据。我将此对象传递给递归方法来构建上面映射中每个键的对象。请参阅下面的示例。

例如,

<1 - <1, Pair<1, 'A'>>

<2 - <1, Pair<1, 'A'>>
     <2, Pair<2, 'B'>>

我想检查上面 map 上的循环依赖。请参阅下面的示例。

<9994 - <1, Pair<9995, 'X'>>
        <2, Pair<2, 'B'>>

<9995 - <1, Pair<9994, 'Y'>>
        <2, Pair<2, 'B'>>

9994以上包含9995,9995包含9994。这是无效的,应该使程序出错。

有人可以建议我执行此验证的最佳方法吗?

谢谢。

私有(private)静态 boolean 验证( map >输入, 设置对象)抛出异常{ boolean 结果 = true; for (Pair cal : input.values()) { if (!object.add(cal.left)) 返回假; 结果 = 验证(get(cal.left), 对象); } 返回结果; }

最佳答案

循环依赖的检查可以通过Depth-first-search来实现。为此,必须更改要检查的对象以包含一个标志(这将指示它们是否已经被访问过),或者一些辅助数据结构(例如列表或 HashMap )将包含访问过的节点。

关于Java 对象图验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334150/

相关文章:

java - 如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中

java - 重写 ServletContextListener 的实现是一个好习惯吗?

java - 怎么这么快(背后的算法或逻辑)

scala - 为什么 scala.util.Success.apply 不是无限递归的?

recursion - 递归计算列表平均值

session 不活动时不调用 Java SessionDestroyed

java - JDOM 使用变音符号解析 XML

Python 数组旋转

c - 从文件路径反向获取目录路径

java - 递归打印阶乘