- - PR -
CSVファイル読込み → データ保持について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-31 14:36
お世話になっています。 CSVからのデータ取得処理について
ご意見をもらえればと思い書き込みました 現在、CSVファイルから第1、第2、第3列を読込みその値を使って 処理をしています。 その為 1,2,3と固定の為Vectorを3つ用意し 列1,2,3を表していますが、汎用性悪い為、String[][]を使いCSV 全データを取得するようにしたいと考えています。 処理としましては、以下の用にしています。 Stringの2次元配列にする場合、縦、横のサイズがファイル内をみて みないとわからない為、サイズ指定をどうするべきかで悩んでいます。 その2で記述したメソッドを使い1度ファイル内から件数取得 と考えているのですが、2度もループで中身を見るのは処理が重くなり そうなので、つくり上よろしくないかと思ったのですが、一般的にはどのよう にするべきなのでしょうか? ご意見よろしくお願いします。
[ メッセージ編集済み 編集者: n.w 編集日時 2005-10-31 14:37 ] | ||||||||
|
投稿日時: 2005-10-31 14:43
調べていて気づいた点があったので追記
whileループ部分について、splitなるメソッドを発見しました。 これにより横のサイズは気にせず、この配列をVecotorあたりへ addしていき、 検索終了時、VecotorからString[][]へ変換する ような処理を用いればStringの2次元配列で表をあらわせそうです。 ただ、まだ気持ちの悪いソース感が漂ってしまうのは、やはり Vecotorから移し変えという1クッション入るからでしょうか・・・
| ||||||||
|
投稿日時: 2005-10-31 14:47
こんにちは。
僕がCSVファイルを読み込むときは、だいたいMapを格納したListとして保持します。 1行をMapに格納してListに追加していく感じですね。
CSVファイルの1行目がカラム名になっている場合は、上記コードのcolumn1,column2,column3をそのカラム名にしたりします。 以上ご参考になれば。 _________________ 3年目PG(そろそろSE?) Σ(゚д゚;) ハッ!? ベテランに昇格してる・・・ | ||||||||
|
投稿日時: 2005-10-31 14:59
どもです。がると申します。
ちょっと気になったので。 CSVですが、データの中に,とか改行とかが入りうる可能性 があるかと思うのですが、そのあたりは ・考慮している ・意図的にオミットしている のいずれかであると捉えてよいのでしょうか? ちぃと蛇足ではあるのですが、気になったので軽く突っ込みなどを。 | ||||||||
|
投稿日時: 2005-10-31 15:05
とりあえず、ループが二回発生するのは致し方ないと思いますよ。
全体が分からない場合に、vectorやlist、mapを使うのは正しい方向性かと。 String[][]にこだわる必要がないのなら、 たとえばCSVを、listのlistに突っ込んで保持するクラスを作って、 getdata(x, y)・setdata(x, y)のようなメソッドで1セルずつ扱う、 という方法ではどうでしょうね。 | ||||||||
|
投稿日時: 2005-10-31 15:08
takashiさん、がるがるさん、ご教授、ご指摘ありがとうございます。
List、HashMapを使いすっきりさせることができました。 また、データ内の,や改行に関しては仕様で入らないという 方向なのでだいじょうぶです。 ただ、ご指摘いただいて気になってしまったのですが、仮に入った場合 どのように対応するべきなのでしょうか? CSVの,とデータの,だと区別できない(?)からやはり フォーマットと合いませんみたいな処理で対応とするのでしょうか? <などのようにデータ内に特定の置換文字(<)とかをいれ置換? など仕様に合わせてとなってしまいますか? ※ mioさん、投稿がちょうどすれ違ってしまってました、すいません。 確かにsetter、getterを設けるとなおきれいにいけそうですね、 ちょっと手を入れてみます。 [ メッセージ編集済み 編集者: n.w 編集日時 2005-10-31 15:34 ] | ||||||||
|
投稿日時: 2005-10-31 15:14
解決なされたようでなによりです。
データの中に,などが含まれていた場合の対応ですが、 こんなものがありました。 http://www.wakhok.ac.jp/~tomoharu/Java/csv/ _________________ 3年目PG(そろそろSE?) Σ(゚д゚;) ハッ!? ベテランに昇格してる・・・ | ||||||||
|
投稿日時: 2005-10-31 15:32
> String[][]にこだわる必要がないのなら、
(組込みdbを使う) hsqldb csv の2語の検索結果でもいいと思います |