ArrayList.BinarySearch メソッド
バイナリ サーチ アルゴリズムを使用して、並べ替えられた ArrayList 内の特定の要素またはその一部を検索します。
オーバーロードの一覧
既定の比較演算子を使用して、並べ替えられた要素の ArrayList 全体を検索し、その要素の 0 から始まるインデックスを返します。
[Visual Basic] Overloads Public Overridable Function BinarySearch(Object) As Integer
指定した比較演算子を使用して、並べ替えられた要素の ArrayList 全体を検索し、その要素の 0 から始まるインデックスを返します。
[Visual Basic] Overloads Public Overridable Function BinarySearch(Object, IComparer) As Integer
[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.
*/