我有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/