- - PR -
二次元配列、可変列のCSVファイル出力
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-19 02:22
はじめまして。二次元配列で実現を検討しているのですが
以下のような処理は可能なのでしょうか。 ●テーブルのデータ No Name Code Type Value ------------------------ 1 SCOTT AAA 1111 TOKYO 1 SCOTT BBB 2222 OSAKA 2 TIGER AAA 1111 NAGOYA 2 TIGER BBB 2222 FUKUOKA ●出力したいCSVファイル Code Type SCOTT TIGER ------------------------- AAA 1111 TOKYO NAGOYA BBB 2222 OSAKA FUKUOKA テーブルのNameを列要素としてcsvファイルに出力する 必要があります。列要素数は可変です。 ArrayList strList = new String[行要素数][列要素数] strList[0][0] = AAA strList[0][1] = 1111 strList[0][2] = TOKYO のように考えてみたのですが、 列要素の追加についてはどのように考えれば よいかアドバイスをいただけないでしょうか。 テーブルから取得するデータは、No単位で取得 しています。 Javaのコーディング、OracleSQLの両面から 効率的な解決策を模索中です。 | ||||
|
投稿日時: 2007-09-19 13:26
マップMのキーと値を、M{キー⇒値}と表現する。
AとBを持つクラスXのインスタンスをX(A,B)と表現する。 M1{X(Code, Type)⇒M2{Name⇒Value}} で全て格納する。 あとはマップのキーでループしながら出力していく。 | ||||
|
投稿日時: 2007-09-21 01:42
ふーばーさん
アドバイスありがとうございます。 マップで試してみたのですが、Nameはキーとして 使用するには重複するため思うような結果がでませんでした。 時間的制約もあったので、今回はListを用いて強引に作りました。 ただレスポンスを考えるとマップの方が効率的と感じました。 別途、時間的余裕がある際、挑戦してみようと思います。 ふーばーさんの考えるアドバイス的なサンプルソースが 参考にできれば幸いです。 | ||||
|
投稿日時: 2007-09-21 08:30
> マップで試してみたのですが、Nameはキーとして
> 使用するには重複するため思うような結果がでませんでした。 こういうケースがあるならそう書かないとわかるわけないじゃん。 試したのにサンプルソースとやらが必要か? | ||||
|
投稿日時: 2007-09-22 01:10
ふーばーさん
> こういうケースがあるならそう書かないとわかるわけないじゃん。 おっしゃる通り。たしかに言葉では明記していませんでした。 テーブルの例を見れば重複しているのですが、説明が不足していました。 意図的に書いたのですが・・・ 重複無しと思い込みで捉えられてしまったようです。 > ●テーブルのデータ > No Name Code Type Value > ------------------------ > 1 SCOTT AAA 1111 TOKYO > 1 SCOTT BBB 2222 OSAKA > 2 TIGER AAA 1111 NAGOYA > 2 TIGER BBB 2222 FUKUOKA > 試したのにサンプルソースとやらが必要か? 大ベテランの方が考えるロジックを純粋に知って見たいと 思っただけです。特に他意はありません。 | ||||
|
投稿日時: 2007-09-22 02:30
ふーばーさんがマップ全体のキー項目として考えた X(Code, Type) に着目する限り、Nameは重複していませんよね。 データ全体では同じNameがあっても。 ふーばーさんがCodeとTypeを複合主キーと見立てたように ●出力したいCSVファイル を見る限りでは、はいあさんの記述からも同じことがやりたいというように 見えるのです。 私が回答する立場だったとしても、同様の回答をしていたはずです。 前提が変われば解がまったく違ったものになってしまいます。 ちなみにNameもキーであれば、この条件だけでは解なしです。 [ メッセージ編集済み 編集者: 暁 編集日時 2007-09-22 02:32 ] | ||||
|
投稿日時: 2007-09-22 17:19
ふーばーさん、暁さん
大変申し訳ありませんでした。当方のキーという言葉の使い方が 誤解を与えてしまいました。 結論から言いますと御二方のアドバイスは的を得ており、充分な 理解をしていれば実現できたと思います。 Code,Typeは複合でユニークキーです。 単一でNameは重複していても、[Code,Type]に関連する[Name,value]は 一意に定まります。 当方、マップのマップを正しく理解しなかったため、誤ったイメージで 確認をしてしまいました。 Map1{(AAA,1111),Map2(SCOTT,TOKYO)}のようなイメージで確認したため Map2の結果が同一Nameの最終レコードで置き換えられすべて同じになった。 正しくは、Map1{(AAA,1111),Map2("AAA,1111,SCOTT",TOKYO)}のように 考えればよかったのでしょうか? Code,Type,Nameはテーブル内でユニークキーとなります。 次回からは前提条件や確認したソースを提示し、誤解を与えないよう 留意します。 | ||||
|
投稿日時: 2007-09-22 19:40
次回からはマルチポストもやめてくださいね http://www.javaroad.jp/bbs/answer.jsp?q_id=2007091902265115 |