VB2005 ジェネリックのリストの使い方

    Private Sub リストテスト()

        Dim a As New List(Of String)    ‘ジェネリックのリスト(文字列の例)
        Dim idx As Integer

        ‘リストに追加

        a.Add(“あ”)
        a.Add(“う”)
        a.Add(“い”)

        ‘リスト内に要素があるか調査(Containsメソッド)

        Dim str1 As String = “い”
        If a.Contains(“い”) Then
            MessageBox.Show(“い 発見”, “Containsメソッド”, MessageBoxButtons.OK)
        Else
            MessageBox.Show(“い 無し”, “Containsメソッド”, MessageBoxButtons.OK)
        End If

        ‘リスト内での要素の位置を調査(IndexOfメソッド)

        idx = a.IndexOf(“い”)
        If idx >= 0 Then
            MessageBox.Show(“い の位置=” + idx.ToString, “IndexOfメソッド”, MessageBoxButtons.OK)
        Else
            MessageBox.Show(“い 無し”, “IndexOfメソッド”, MessageBoxButtons.OK)
        End If

        ‘上記ContainsやIndexOfは要素数が大きいと遅い.
        ‘そんな時は要素数が大きくても速いBinarySearchを使う.
        ‘しかしBinarySearchはあらかじめソートされている必要がある.

        ‘リスト内での要素の位置を調査(BinarySearchメソッド)

        a.Sort() ‘ソートしないと結果がおかしくなる
        idx = a.BinarySearch(“い”)
        If idx >= 0 Then
            MessageBox.Show(“い の位置=” + idx.ToString, “BinarySearchメソッド”, MessageBoxButtons.OK)
        Else
            MessageBox.Show(“い 無し”, “BinarySearchメソッド”, MessageBoxButtons.OK)
        End If

        ‘BinarySearchその2
        ‘要素をソートしながら追加する方法
        ‘こうすると最初からソートされているのでSortメソッドを使う必要がない.

        a.Clear()

        idx = a.BinarySearch(“あ”)
        If idx < 0 Then
            idx = idx Xor -1
            a.Insert(idx, “あ”)
        End If

        idx = a.BinarySearch(“う”)
        If idx < 0 Then
            idx = idx Xor -1
            a.Insert(idx, “う”)
        End If

        idx = a.BinarySearch(“い”)
        If idx < 0 Then
            idx = idx Xor -1
            a.Insert(idx, “い”)
        End If

        idx = a.BinarySearch(“い”) ‘ソートされているので問題なし
        If idx >= 0 Then
            MessageBox.Show(“い の位置=” + idx.ToString, “BinarySearchその2”, MessageBoxButtons.OK)
        Else
            MessageBox.Show(“い 無し”, “BinarySearchその2”, MessageBoxButtons.OK)
        End If

    End Sub