- PR -

二次元配列、可変列のCSVファイル出力

投稿者投稿内容
はいあ
会議室デビュー日: 2006/07/12
投稿数: 5
投稿日時: 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の両面から
効率的な解決策を模索中です。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2007-09-19 13:26
マップMのキーと値を、M{キー⇒値}と表現する。
AとBを持つクラスXのインスタンスをX(A,B)と表現する。
M1{X(Code, Type)⇒M2{Name⇒Value}}
で全て格納する。
あとはマップのキーでループしながら出力していく。
はいあ
会議室デビュー日: 2006/07/12
投稿数: 5
投稿日時: 2007-09-21 01:42
ふーばーさん

アドバイスありがとうございます。
マップで試してみたのですが、Nameはキーとして
使用するには重複するため思うような結果がでませんでした。

時間的制約もあったので、今回はListを用いて強引に作りました。

ただレスポンスを考えるとマップの方が効率的と感じました。
別途、時間的余裕がある際、挑戦してみようと思います。

ふーばーさんの考えるアドバイス的なサンプルソースが
参考にできれば幸いです。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2007-09-21 08:30
> マップで試してみたのですが、Nameはキーとして
> 使用するには重複するため思うような結果がでませんでした。

こういうケースがあるならそう書かないとわかるわけないじゃん。

試したのにサンプルソースとやらが必要か?
はいあ
会議室デビュー日: 2006/07/12
投稿数: 5
投稿日時: 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

> 試したのにサンプルソースとやらが必要か?

大ベテランの方が考えるロジックを純粋に知って見たいと
思っただけです。特に他意はありません。
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2007-09-22 02:30
引用:

はいあさんの書き込み (2007-09-22 01:10) より:
テーブルの例を見れば重複しているのですが、説明が不足していました。


ふーばーさんがマップ全体のキー項目として考えた
X(Code, Type)
に着目する限り、Nameは重複していませんよね。
データ全体では同じNameがあっても。

ふーばーさんがCodeとTypeを複合主キーと見立てたように
●出力したいCSVファイル
を見る限りでは、はいあさんの記述からも同じことがやりたいというように
見えるのです。
私が回答する立場だったとしても、同様の回答をしていたはずです。
前提が変われば解がまったく違ったものになってしまいます。
ちなみにNameもキーであれば、この条件だけでは解なしです。


[ メッセージ編集済み 編集者: 暁 編集日時 2007-09-22 02:32 ]
はいあ
会議室デビュー日: 2006/07/12
投稿数: 5
投稿日時: 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はテーブル内でユニークキーとなります。

 次回からは前提条件や確認したソースを提示し、誤解を与えないよう
 留意します。
未記入X
大ベテラン
会議室デビュー日: 2005/05/19
投稿数: 136
投稿日時: 2007-09-22 19:40
引用:

はいあさんの書き込み (2007-09-22 17:19) より:
 次回からは前提条件や確認したソースを提示し、誤解を与えないよう
 留意します。


次回からはマルチポストもやめてくださいね
http://www.javaroad.jp/bbs/answer.jsp?q_id=2007091902265115

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