我有一个集合:
列表< VPair<项目,列表&项目>> dependencyHierarchy;成对的第一个项目是一些对象(项目),第二个是相同的集合键入第一个依赖的对象。我想以依赖的顺序获得列表< Item> ,所以没有依赖于第一个元素的项目等等(没有循环依赖!)。 p>
输入:
项目4取决于Item3和Item5 Item3依赖于Item1 项目1不依赖于任何一个项目2取决于Item4 项目5不依赖于任何一个结果:
项目1 项目5 项目3 项目4 项目2谢谢。
解决方案:
拓扑排序(感谢LoïcFévrier为想法)
和
C#上的示例, Java的例子(感谢 xcud 的很好的例子)
解决方案p>使用拓扑排序的完美示例:
en.wikipedia/wiki/Topological_sorting
它会给你准确的你所需要的。
I have a collection:
List<VPair<Item, List<Item>> dependencyHierarchy;The first item in pair is some object (item) and the second one is a collection of the same type objects that the first one depends on. I want to get a List<Item> in order of dependency, so there are not items that depend on the first element and so on (no cycled dependency!).
Input:
Item4 depends on Item3 and Item5 Item3 depends on Item1 Item1 does not depend on any one Item2 depends on Item4 Item5 does not depend on any oneResult:
Item1 Item5 Item3 Item4 Item2Thank you.
SOLUTION:
Topological Sorting (thanks to Loïc Février for idea)
and
example on C#, example on Java (thanks to xcud for great examples)
解决方案Perfect example to use a topological sort :
en.wikipedia/wiki/Topological_sorting
It will give you exactly what you need.
更多推荐
如何按依赖关系对依赖的对象进行排序
发布评论