ArrayListのSortメソッドでソートされない
- 題名: ArrayListのSortメソッドでソートされない
- 著者: oni
- 日時: 2006/11/17 21:31:23
- ID: 18272
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: ArrayListのSortメソッドでソートされない
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2006/11/18 4:11:51
- ID: 18274
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ArrayListのSortメソッドでソートされない
- 著者: oni
- 日時: 2006/11/19 11:43:33
- ID: 18282
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
VisualBasic2005で開発をしています。
ArrayListのSortメソッドで、インターフェイスIComparerのCompareメソッドを実装したクラスを引き渡して、並び替えをしたいと考えています。
しかし、ArrayListの要素が2個の場合に正しく並び変わらない現象が出て困っています。
3個以上の要素の場合は、正しく並び変わります。
なにか足りないことがあるのでしょうか。
よろしくお願いいたします。
(ソース)
<ソート実行側>
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyArray As New ArrayList
MyArray.Add(10)
MyArray.Add(9)
'MyArray.Add(8) 'これがあると正しく処理できる。
Dim Comp As New MyCompare
MyArray.Sort(Comp)
End Sub
End Class
<IComparer実装>
Public Class MyCompare
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim x_ As Integer = CType(x, Integer)
Dim y_ As Integer = CType(y, Integer)
'// ここで比較要素が2つの場合、x_・y_とも同じ値となってしまう
'// x_が10、y_も10
'// 比較ロジック...
End Function
End Class