- - PR -
ArrayListのソートについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-01-22 09:35
お世話になります。
VB.NETでArrayListにCSVファイルから取得した多項目のデータを保存し、 ソートをしようと考えています。 今回は事情があってDataTable等が使用できません。 ソートを考えた保存方法として、 ArrayListにクラス配列(エンティティ)を追加する方法と、 構造体を追加する方法の2つを考えましたが、 他に良い方法があったら教えてください。 また、ArrayList.Sort()で単純にソートすると、 特にクラス配列が追加されている場合、 ソート順はどのようにソートされるのでしょうか? 何方かご教授頂けます様、よろしくお願い致します。 | ||||||||
|
投稿日時: 2009-01-22 10:12
こんにちは
こちらはご覧になりましたか? http://msdn.microsoft.com/ja-jp/library/system.icomparable.aspx?ppud=4 ソートの条件は自分で実装できます。 | ||||||||
|
投稿日時: 2009-01-22 10:12
これでいいんじゃないですかね。 2005 以降なら ArrayList よりも List(Of T) を使うべきですが。 ん? クラス配列? 配列ってどういうことでしょうか? String の配列ってこと?
要素に IComparable が実装されておらず IComparer も指定しない場合例外が投げられます。 | ||||||||
|
投稿日時: 2009-01-22 10:27
VB.NET のバージョンはいくつになりますか?
VB 2005 以降ならば、ArrayList よりも List<T> (System.Collections.Generics) を使った方が良いです。 > クラス配列(エンティティ) これが何を指しているのかがよくわかりません。 直後に構造体が挙がっていることからすると、単にクラスのことを言っているのでしょうか。 > また、ArrayList.Sort()で単純にソートすると、 > 特にクラス配列が追加されている場合、 > ソート順はどのようにソートされるのでしょうか? ArrayList.Sort() のソート順は、要素の IComparable の実装に従います。IComparable を実装していない場合はソートできません。 ArrayList.Sort(IComparer) の場合は、受け取った IComparer の実装に従います。 _________________ C#と諸々 | ||||||||
|
投稿日時: 2009-01-22 10:41
早速の回答ありがとうございます。
>Hongliang様 残念ながら2003を使用しています。 >クラス配列 表現の仕方が悪かったです。 Stringの配列です。 ちなみに構造体で Private Structure Person Public Name As String Public Age As Integer Public Sub setPerson(ByVal n As String, ByVal a As Integer) Name = n Age = a End Sub End Structure を定義して、ArrayListに追加した場合、 ArrayList.Sort()でも例外は発生してしまうのでしょうか? 当方の無知で見当外れな質問かも知れませんが、 なにとぞよろしくお願い致します。 以上 | ||||||||
|
投稿日時: 2009-01-22 11:00
はい。この構造体は Implements IComparable をやってませんからね。 ところで Structure を使うのはできる限り避けてください。Class の方がほとんどの場合に優れています。 この場合、Structure Person ではなく Class Person を ArrayList に追加していくのが良いでしょう。 | ||||||||
|
投稿日時: 2009-01-22 19:50
ありがとうございました。
もう少し勉強してみます。 |
1