2011-08-29 78 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