1

私は非常に多くの心のこもったJavaの専門家に勇気づけられているので、今日はあえて別の質問を投げて助けを求めます(私の質問はすべて実際のプロジェクトからのものです-そして私はJavaを学ぶための近道を取っているので、取るよりも難しいですJavaの通常のコース)。

これが私が達成したいデータ構造です(最終結果はキーとしてidを持つTreeMapになるはずです)

id (int)   Characteristic (int)  parent(by id) immediate children (by id)
1           1                    {}            {2,3,4}
2           99                   {1}           {}
3           99                   {1}           {}
4           2                    {1}           {5,6}
5           99                   {2}           {}
6           3                    {2}           {7,8}
7           99                   {3}           {}
8           4                    {3}           {x,xx, ...}
....
....

最初の2つの列は既知であり、最後の2つの列はプログラムで取得する必要があります。

ルールは次のとおりです。

1)Characteristcが1のアイテムは祖先であり、親を持つことはありません。

2)特性が99のアイテムは、子供を産むことはありません。

3)特性(2〜9)のアイテムには、親と子を含めることができ、その子には子(99よりも大きい必要があります)を含めることも、子を持たないこともできます(99)。たとえば、2は99と3を子として持つことができますが、3は2を子として持つことはできません)

ありがとう

4

2 に答える 2

0

ジョンに質問しているのではありません。ただし、ここではオブジェクト指向を考える必要があります。次のようなクラスを作成します。

Item:
   int id
   int characteristic
   Item parent
   List<Item> children

使用するデータ構造に関係なく、上記のオブジェクトを使用できます。オブジェクトをデータ構造から切り離しておくことが重要です。後で、マップまたはツリーセットが必要になると判断する場合があります。これで、すべてのItemオブジェクトを含むツリーセットを作成するだけで済みます。

あなたの質問は、ツリーセットとは関係がなく、クリーンなオブジェクト指向を使用してこれらのオブジェクトを作成する方法についても説明します。

于 2010-11-11T19:39:52.603 に答える
0

あなたは木と地図の概念を混同しているかもしれません。Java Mapは、(通常は)別のタイプのオブジェクトをキーとして使用して多数のオブジェクトをマップできるインターフェースを提供します。あなたの場合、Longsをキーとして使用しているようです。具体的なマップは、HashMapまたはTreeMapのいずれかであり、それぞれに独自の利点があります。通常、HashMapの取得は高速ですが、TreeMapにはソートされたキーの利点があります。ただし、TreeMapに特定のツリー構造を作成させることはできません。木の形自体を管理します。ツリーアイテムを表すには、addChild、getChildren、getParentなどの操作をサポートするある種のツリーノードオブジェクトが必要です。ツリーノードオブジェクトを使用してツリーを構築する場合は、それらのオブジェクトをマップに簡単に追加して、IDで取得できます。

于 2010-11-11T19:48:09.527 に答える