2011-08-29 79 views
0

迭代我有一个数据结构如下:如何通过递归递归数据结构

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这样的属性。在AB的每个级别的id号应该像我们在书中的结构。什么是最有效的方法来做到这一点?

+1

为什么循环引用('A-> B-> A - > ...')?为什么不简单地这样做:'public class A {String Number; 地图地图; }'? –

回答

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); 
     } 
    } 
} 
+0

@saurabh ranu:我添加了代码捕捉,我没有调试它,但它应该是一般的方法。 – amit

+0

以及我没有看到你创建任何xml结构a.What我可以看到你刚刚访问..我需要一个xml结构它与id号码作为xml结构我已经转移上面.. –

+0

@saurabh ranu:你可以添加一个'List ',表示到目前为止,用户对参数的要求。我的答案只针对如何解决这个问题给出一个可能的方向 – amit