次の方法で共有


ArrayList.BinarySearch メソッド

バイナリ サーチ アルゴリズムを使用して、並べ替えられた ArrayList 内の特定の要素またはその一部を検索します。

オーバーロードの一覧

既定の比較演算子を使用して、並べ替えられた要素の ArrayList 全体を検索し、その要素の 0 から始まるインデックスを返します。

[Visual Basic] Overloads Public Overridable Function BinarySearch(Object) As Integer

[C#] public virtual int BinarySearch(object);

[C++] public: virtual int BinarySearch(Object*);

[JScript] public function BinarySearch(Object) : int;

指定した比較演算子を使用して、並べ替えられた要素の ArrayList 全体を検索し、その要素の 0 から始まるインデックスを返します。

[Visual Basic] Overloads Public Overridable Function BinarySearch(Object, IComparer) As Integer

[C#] public virtual int BinarySearch(object, IComparer);

[C++] public: virtual int BinarySearch(Object*, IComparer*);

[JScript] public function BinarySearch(Object, IComparer) : int;

指定した比較演算子を使用して、並べ替えられた要素の ArrayList の一セクションを検索し、その要素の 0 から始まるインデックスを返します。

.NET Compact Framework でもサポート。

[Visual Basic] Overloads Public Overridable Function BinarySearch(Integer, Integer, Object, IComparer) As Integer

[C#] public virtual int BinarySearch(int, int, object, IComparer);

[C++] public: virtual int BinarySearch(int, int, Object*, IComparer*);

[JScript] public function BinarySearch(int, int, Object, IComparer) : int;

使用例

BinarySearch を使用して、 ArrayList の特定のオブジェクトを検索する方法の例を次に示します。

 
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic

Public Class SamplesArrayList    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new ArrayList.
        Dim myAL As New ArrayList()
        Dim i As Integer
        For i = 0 To 4
            myAL.Add(i * 2)
        Next i 
        ' Displays the ArrayList.
        Console.WriteLine("The Int32 ArrayList contains the following:")
        PrintValues(myAL)
        
        ' Locates a specific object that does not exist in the ArrayList.
        Dim myObjectOdd As Object = 3
        FindMyObject(myAL, myObjectOdd)
        
        ' Locates an object that exists in the ArrayList.
        Dim myObjectEven As Object = 6
        FindMyObject(myAL, myObjectEven)
    End Sub    
    
    Public Shared Sub FindMyObject(myList As ArrayList, myObject As Object)
        Dim myIndex As Integer = myList.BinarySearch(myObject)
        If myIndex < 0 Then
            Console.WriteLine("The object to search for ({0}) is not found. " _
               + "The next larger object is at index {1}.", myObject, _
               Not myIndex)
        Else
            Console.WriteLine("The object to search for ({0}) is at index " _
               + "{1}.", myObject, myIndex)
        End If
    End Sub
     
    Public Shared Sub PrintValues(myList As IEnumerable)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myList.GetEnumerator()
        While myEnumerator.MoveNext()
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
    
End Class

' This code produces the following output.
' 
' The Int32 ArrayList contains the following:
'     0    2    4    6    8
' The object to search for (3) is not found. The next larger object is at index 2.
' The object to search for (6) is at index 3. 

[C#] 
using System;
using System.Collections;
public class SamplesArrayList  {

   public static void Main()  {

      // Creates and initializes a new ArrayList.
      ArrayList myAL = new ArrayList();
      for ( int i = 0; i <= 4; i++ )
         myAL.Add( i*2 );

      // Displays the ArrayList.
      Console.WriteLine( "The Int32 ArrayList contains the following:" );
      PrintValues( myAL );

      // Locates a specific object that does not exist in the ArrayList.
      Object myObjectOdd = 3;
      FindMyObject( myAL, myObjectOdd );

      // Locates an object that exists in the ArrayList.
      Object myObjectEven = 6;
      FindMyObject( myAL, myObjectEven );
   }

   public static void FindMyObject( ArrayList myList, Object myObject )  {
      int myIndex=myList.BinarySearch( myObject );
      if ( myIndex < 0 )
         Console.WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, ~myIndex );
      else
         Console.WriteLine( "The object to search for ({0}) is at index {1}.", myObject, myIndex );
   }

   public static void PrintValues( IEnumerable myList )  {
      System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
      while ( myEnumerator.MoveNext() )
         Console.Write( "\t{0}", myEnumerator.Current );
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

The Int32 ArrayList contains the following:
    0    2    4    6    8
The object to search for (3) is not found. The next larger object is at index 2.
The object to search for (6) is at index 3.
*/ 

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Collections;

void FindMyObject( ArrayList* myList, Object* myObject );
void PrintValues( IEnumerable* myList );
 
void main() {
 
    // Creates and initializes a new ArrayList instance.
    ArrayList* myAL = new ArrayList();
    for ( int i = 0; i <= 4; i++ )
        myAL->Add( __box(i*2) );
 
    // Displays the ArrayList.
    Console::WriteLine( "The Int32 ArrayList contains the following:" );
    PrintValues( myAL );
 
    // Locates a specific object that does not exist in the ArrayList.
    Object* myObjectOdd = __box(3);
    FindMyObject( myAL, myObjectOdd );
 
    // Locates an object that exists in the ArrayList.
    Object* myObjectEven = __box(6);
    FindMyObject( myAL, myObjectEven );
}
 
void FindMyObject( ArrayList* myList, Object* myObject ) {
    int myIndex = myList->BinarySearch( myObject );
    if ( myIndex < 0 )
        Console::WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, __box(~myIndex) );
    else
        Console::WriteLine( "The object to search for ({0}) is at index {1}.", myObject, __box(myIndex) );
}
 
void PrintValues( IEnumerable* myList ) {
    System::Collections::IEnumerator* myEnumerator = myList->GetEnumerator();
    while ( myEnumerator->MoveNext() )
        Console::Write( "\t{0}", myEnumerator->Current );
    Console::WriteLine();
}

 /* 
 This code produces the following output.
 
 The Int32 ArrayList contains the following:
     0    2    4    6    8
 The object to search for (3) is not found. The next larger object is at index 2.
 The object to search for (6) is at index 3.
 */ 

[JScript] 
import System;
import System.Collections;


// Creates and initializes a new ArrayList.
var myAL : ArrayList = new ArrayList();
for ( var i : int = 0; i <= 4; i++ )
  myAL.Add( int(i*2 ));

// Displays the ArrayList.
Console.WriteLine( "The Int32 ArrayList contains the following:" );
PrintValues( myAL );

// Locates a specific object that does not exist in the ArrayList.
var myObjectOdd = 3;
FindMyObject( myAL, myObjectOdd );

// Locates an object that exists in the ArrayList.
var  myObjectEven = 6;
FindMyObject( myAL, myObjectEven );


function FindMyObject( myList : ArrayList, myObject )  {
   var myIndex : int = myList.BinarySearch( myObject );
   if ( myIndex < 0 )
      Console.WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, ~myIndex );
   else
      Console.WriteLine( "The object to search for ({0}) is at index {1}.", myObject, myIndex );
}

function PrintValues( myList : IEnumerable)  {
   var myEnumerator : System.Collections.IEnumerator = myList.GetEnumerator();
   while ( myEnumerator.MoveNext() )
      Console.Write( "\t{0}", myEnumerator.Current );
   Console.WriteLine();
}
 /* 
 This code produces the following output.
 
 The Int32 ArrayList contains the following:
     0    2    4    6    8
 The object to search for (3) is not found. The next larger object is at index 2.
 The object to search for (6) is at index 3.
 */ 

参照

ArrayList クラス | ArrayList メンバ | System.Collections 名前空間