我的数据结构如下:
public class A{
String number;
Map <String ,B> BMap;
}
public class B{
String number;
Map <String ,A> AMap;
}
0 B
0.0 A
0.1 A
0.1.0 B
...so on
1 B
1.0 A
1.0.0 B
1.1 A
等等。 注意: B
之后没有B
。
现在我想通过类B
的地图进行迭代,即AMap
。我试图从中创建一个XML结构。我想要一些像id-number这样的属性。 A
和B
每个级别的ID号应该与书中的结构相似。最有效的方法是什么?
答案 0 :(得分:1)
将问题视为bipartite-graph,然后运行DFS。
编辑:添加代码快照
我没有调试它,但它应该是那样的[看看迭代方法]。使用iterate(new HashSet<A>(),new HashSet<B>())
public class A{
String number;
Map<String ,B> BMap;
public void iterate(Set<A> aVisited,Set<B> bVisited) {
for (Entry<String, B> entry : BMap.entrySet()) {
if (bVisited.contains(entry.getValue())) continue;
System.out.println(entry.getKey());
bVisited.add(entry.getValue());
entry.getValue().iterate(aVisited,bVisited);
}
}
}
public class B{
String number;
Map<String ,A> AMap;
public void iterate(Set<A> aVisited,Set<B> bVisited) {
for (Entry<String, A> entry : AMap.entrySet()) {
if (aVisited.contains(entry.getValue())) continue;
System.out.println(entry.getKey());
aVisited.add(entry.getValue());
entry.getValue().iterate(aVisited,bVisited);
}
}
}