- PR -

データ構造

投稿者投稿内容
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-03-01 22:44
下記のような、ResultSetで取得したDBテーブルがあります。

1|動物|犬|ポチ
2|動物|犬|ポチ
3|動物|犬|タロ
4|動物|猫|ミケ
5|動物|猫|ミケ

それぞれのデータをグループ化して、ネストした構造でBeanにしたいのですが考えが及びません。

動物--犬--ポチ
  |  +-タロ
  +-猫--ミケ

どのようなクラス構造でインスタンス化するのがよろしいでしょうか?
現在、考えているのは、下層項目を配列で保持しようとしていますが、
うまくプログラムが組めません。

わかり難い質問かとは思いますが、よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-01 23:25
>現在、考えているのは、下層項目を配列で保持しようとしていますが、
サイズが不明な場合配列をつかおうとするとちょっとややこしいかもしれません。
ArrayList 等を使ってみてはいかがでしょう。
ArrayList の contains でその値が既にリストに含まれているかどうかを確認できます。
http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html#contains(java.lang.Object)

contains が false を返したら add でリストに加える、といった形でいけるかと。
どうしても最終的に配列が欲しいのであればtoArray()で配列を得ることもできます。

[ メッセージ編集済み 編集者: インギ 編集日時 2006-03-01 23:28 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-02 06:57
重複を許さない集合ですので Set の方が適切かもしれませんね。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-03-02 09:05
アドバイスありがとうございます。

ArrayListを使用する方法で考えていたのですが、どうしても重複をプログラムで排除する方法が思いつきませんでした。

>>contains が false を返したら add でリストに加える、といった形でいけるかと。
>>重複を許さない集合ですので Set の方が適切かもしれませんね。

そうですね。よく調べてみます。

相変わらず、物を持っていても使い方を知らない自分が残念です。(-_-;)
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-02 09:16
ネスト構造には全く触れていませんが、応用できるでしょうか?
ひとまずはネストしない・重複しないリストを作るところからがんばってみてください。

>相変わらず、物を持っていても使い方を知らない自分が残念です。(-_-
経験のない部分について悩むのは至極当然の事です。
経験を積むにつれコーディング方法もトラブルシューティング方法もパターンが見えてだんだんと加速していくはずですので心配する必要はありませんよ。
NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-03-02 11:14
[quote]
ネスト構造には全く触れていませんが、応用できるでしょうか?
ひとまずはネストしない・重複しないリストを作るところからがんばってみてください。
[/quote]

ありがとうございます。
やはりネスト構造でハマッてます。

親クラスを作成してから子クラスをListに追加するか、子クラスを作成してから親クラスにList追加するかで、アルゴリズム的にかなり混乱しています。
親がいないと子を追加できないし、子がいないと親が追加するものがないという・・・。

でも、ひとつひとつ順を追っていけば良いですね。

NV
ベテラン
会議室デビュー日: 2003/05/20
投稿数: 73
投稿日時: 2006-03-02 14:58
基本的にプログラム組み方の問題ですが、どうしても思ったようにネストできません。

(^o^)/
動物--犬--ポチ
  |  +-タロ
  +-猫--ミケ

(-_-;)
動物--犬--ポチ
  |  +-タロ
  |  +-ミケ
  +-猫--ポチ
    +-タロ
    +-ミケ

何か良い考えはあるでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-02 16:14
あらあら、面白い結果になっていますね。
例えばミケが犬のリストに含まれるのは間違いなわけですから、現在参照しているレコードの種別(犬とか猫とか)と、挿入しようとしているリストの種別の判別が間違っていることになりますね。

スキルアップ/キャリアアップ(JOB@IT)