« [VB6.0] CSVの読み込み | メイン | [VB.NET] 二重起動防止 »
2005年10月14日
[VB.NET] 配列ソート
' ---通常のソート(クイックソート)Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strArray As String() = { _
"いろは ", _
"にほへと ", _
"ちりぬるを ", _
"わか ", _
"よたれそ ", _
"つねならむ " _
}Array.Sort(strArray)
Label1.Text = ""
For i = 0 To 5
Label1.Text = Label1.Text & strArray(i) & vbCrLf
Next i' 出力:
' いろは
' ちりぬるを
' つねならむ
' にほへと
' よたれそ
' わか
End Sub
'--- 独自ソート(Compareメソッド使用)Private Sub Button2_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.ClickDim strArray As String() = { _
"いろは ", _
"にほへと ", _
"ちりぬるを ", _
"わか ", _
"よたれそ ", _
"つねならむ " _
}Dim Comp As IComparer = New StrLenComparer
Array.Sort(strArray, Comp)
Label1.Text = ""
For i = 0 To 5
Label1.Text = Label1.Text & strArray(i) & vbCrLf
Next i' 出力:
' わか
' いろは
' よたれそ
' にほへと
' つねならむ
' ちりぬるをEnd Sub
'文字列数比較クラス
Public Class StrLenComparer
Implements IComparerPublic Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Dim str1 As String = CType(x, String)
Dim str2 As String = CType(y, String)Return str1.Length - str2.Length
End Function
End Class
'--- 独自ソート(自作クラス使用)Private Sub Button3_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button3.ClickDim strArray As StrLenComparer2() = { _
New StrLenComparer2("いろは "), _
New StrLenComparer2("にほへと "), _
New StrLenComparer2("ちりぬるを "), _
New StrLenComparer2("わか "), _
New StrLenComparer2("よたれそ "), _
New StrLenComparer2("つねならむ ") _
}Array.Sort(strArray)
Label1.Text = ""
For Each WordData As StrLenComparer2 In strArray
Label1.Text = Label1.Text & WordData.strData & vbCrLf
Next' 出力:
' わか
' いろは
' よたれそ
' にほへと
' つねならむ
' ちりぬるを
End Sub
End Class'自作文字列数比較クラス
Public Class StrLenComparer2
Implements IComparable
Public strData As StringPublic Sub New(ByVal str As String)
strData = str
End SubPublic Function Compare(ByVal objWord As Object) As Integer Implements IComparable.CompareTo
Dim str1 As StrLenComparer2 = Me
Dim str2 As StrLenComparer2 = CType(objWord, StrLenComparer2)Return str1.strData.Length - str2.strData.Length
End Function
End Class
2005 / 10 / 14