- PR -

csvファイルのソート(c#)

投稿者投稿内容
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-05-29 18:00
こんにちは。

私見ですが、ArrayListにこだわる必要はあまりないような気がします。

DataSetを利用した方法とすれば、たとえば

  1. DataTableを宣言(Columnsは無しで)
  2. 1行をファイルから取得
  3. カンマ区切りで1行分のデータを分割
  4. DataTableのColumnsよりもデータ総数が多ければ適宜Columnを追加
  5. DataRowへ1行分のデータを格納
  6. DataTableへAdd
  7. 以上ループ
  8. 読み終わったらDataTable.DefaultViewを使ってソート
  9. DefaultViewの内容をループしつつ出力

といった方法も取れますよね。
このあたりの話は他の方もされているので参考にしてみてください。

あと int は符号付き32ビット整数なので、少なくとも2,147,483,647までは大丈夫じゃないかと思います。なのでそんなに心配することもないかと。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-05-29 18:00
Collectionに格納してしまうのなら、これを使うのが便利かと思います。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Comparator.html

引用:

ArrayListの添え字はintしかできないのでしょうか?


APIでも、List#get(int index)となっていますね。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-05-29 19:52
引用:

Edossonさんの書き込み (2006-05-29 18:00) より:
Collectionに格納してしまうのなら、これを使うのが便利かと思います。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Comparator.html

引用:

ArrayListの添え字はintしかできないのでしょうか?


APIでも、List#get(int index)となっていますね。


な、なんで急にJavaの話に…
まあそれは置いといて、範囲としてはintで十分でしょう。
VBとかの16ビットのIntegerってイメージがあったのかもしれませんが。
※数値範囲なんかを気にする場合は、ちゃんとリファレンスで確認してみましょう。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-29 23:16
引用:

なちゃさんの書き込み (2006-05-29 19:52) より:
VBとかの16ビットのIntegerってイメージがあったのかもしれませんが。
※数値範囲なんかを気にする場合は、ちゃんとリファレンスで確認してみましょう。


int のプロパティからも取得できますね。
なんでも int っていうのも混乱の元かな?
vistaで64bitだとまたintの範囲が変わっちゃうんでしょうね。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-05-30 00:05
引用:

vistaで64bitだとまたintの範囲が変わっちゃうんでしょうね。



変わりません。

C# では、int が System.Int32 の、long が System.Int64 のエイリアスであると規定されています。

.NET において、実行環境によってサイズが変わる基本型は IntPtr だけです。

Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-05-30 09:46
まいったなあ・・・。
寝ぼけるには早い時間なのに。
スレ汚し、失礼しました。m(_ _)m
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-30 10:01
引用:

渋木宏明(ひどり)さんの書き込み (2006-05-30 00:05) より:

引用:

vistaで64bitだとまたintの範囲が変わっちゃうんでしょうね。



変わりません。

C# では、int が System.Int32 の、long が System.Int64 のエイリアスであると規定されています。

.NET において、実行環境によってサイズが変わる基本型は IntPtr だけです。


そうだったんですね。ありがとうございます
いつか変わるんじゃないかとヒヤヒヤしながらコード書いていたんですが、これからは安心して書けます。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2006-05-30 10:21
こんにちは。

ちょっと気になったので質問させて頂きます。

uken さんの返信に
> @データ量が未知なため、まず1行を1データとしてArrayListに全件追加する。
とあるのですが、私もここがちょっと気になっています。

つまり、ArrayList に格納する、という事はメモリに保持する、という事だと
思うのですが、これってどれくらいのサイズまで許容してくれるのでしょうか?

なんか、別スレッドで○MB以上のファイルを Open → Print すると
こける、みたいなのがあったのでちょっと気になります。

大体○MBくらいまでなら OK、のような指標があれば教えて下さい。
宜しくお願いいたします。

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