2009-04-14 4 views
0

내가 작성중인 응용 프로그램에서 효과적으로 계층 구조를 저장하는 방법을 찾으려고합니다. 다음은 example입니다.계층 구조 컬렉션

하단에 저장할 노드를 볼 수 있습니다. 다차원 목록을 사용해야합니까? 그건 최적이 아닌 것 같은데, 그렇지? 나는 이렇게 견해를 같이 생각하고 있었다 :

node.Parent 
node.Children { collection } 

누구나 이런 종류의 물건에 경험이 있습니까?

답변

1

이것은 매우 기본적인 트리 구현입니다. 자식에 대한 컬렉션을 IList 또는 IEnumable 또는 ArrayList 등으로 만드는 경우에는 사용자가 결정해야합니다.

도메인 모델에 입력 한 것이 아닌 일반 구현을 구축 할 것을 강력히 권장합니다. 그러나 이는 귀하에게 달려 있습니다.

+0

두 번째 단락에서 일반적인 CustomCollection 을 작성 하시겠습니까? –

+0

아니요, TreeNode 부모 및 IEnumerable > 어린이 –

+0

이 포함 된 Treenode 과 유사합니다. 모든 개체의 형식이 같거나 추상화 된 경우 Lucero가 아래 게시물에 언급했기 때문에이 규칙이 적용됩니다. –

1

예. 당신은 올바른 생각을 가지고 있습니다. 양방향 계층이 필요한 경우 다차원 목록을 사용하지 않을 것입니다 ... 트리에 노드를 추가하고 각 노드에는 부모 및 자식 컬렉션이 포함됩니다.

올바른 길을 가고 있습니다.

1

모든 항목이 동일한 유형이 아닌 경우 이러한 상황에서 연결된 목록 및 하위 모음에 추상 기본 클래스를 사용할 수 있습니다.

+0

감사합니다. 노드 : BaseNode, 노드 부모, IEnumerable 어린이? 그렇게하면 부모님/어린이들이 실제 수업을 중단합니까? –

+0

우리는 아이들이 다른 유형 일 수 있다고 생각합니다. 그러나 제네릭을 사용하면 실제로 필요한 경우 강력한 형식의 부모를 가질 수 있습니다. 하지만 보통이 패턴으로 기본 클래스를 사용하기 만하면됩니다. – Lucero