2009-04-14 9 views
0

私が書いているアプリでは、階層を効果的に保存する方法を見つけようとしています。ここにはexampleがあります。階層のコレクション

下部には、保存するノードが表示されます。多次元リストを使用すべきですか?それは最適ではないようですね。私はそのような参照を保持すると考えていた:

node.Parent 
node.Children { collection } 

誰もがこのようなものの経験がありますか?

答えて

1

これはかなり基本的なツリーの実装です。はい。子どものコレクションをIList、IEnumable、ArrayListなどにする場合は、あなた自身が決定します。

ドメインモデルに入力されたものではなく、汎用実装を構築することを強くお勧めしますが、それはあなた次第です。

+0

ありがとう、2番目の段落では、汎用CustomCollection を書いていますか? –

+0

いいえ、more Treenode TreeNodeを含む ParentとIEnumerable > Children –

+0

Luceroは、すべてのオブジェクトが同じタイプまたは抽象である場合、下のポストで言及しているとおりに適用されることに注意してください。 –

1

はい。あなたは正しい考えを持っています。双方向階層が必要な場合は、多次元リストを使用しません...ツリーにノードを追加し、各ノードに親と子のコレクションが含まれています。

あなたは正しい方向にあります。

1

すべてのアイテムが同じタイプであるとは限りませんが、このような状況では、リンクリストと子コレクションに抽象基本クラスを使用できます。

+0

ありがとう、そうノード:BaseNode、ノード親、IEnumerable 子供?私がそれをすると、親子は実際のクラスをキャストしますか? –

+0

私たちは、子供たちは違うタイプのものであると思います。ただし、ジェネリックスを使用すると、必要に応じて厳密に型指定された親を実際に持つことができます。しかし、通常、このパターンで基本クラスを使用するだけです。 – Lucero