次の方法で共有


ArrayList.BinarySearch メソッド (Int32, Int32, Object, IComparer)

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

Overloads Public Overridable Function BinarySearch( _
   ByVal index As Integer, _   ByVal count As Integer, _   ByVal value As Object, _   ByVal comparer As IComparer _) As Integer
[C#]
public virtual int BinarySearch(intindex,intcount,objectvalue,IComparercomparer);
[C++]
public: virtual int BinarySearch(intindex,intcount,Object* value,IComparer* comparer);
[JScript]
public function BinarySearch(
   index : int,count : int,value : Object,comparer : IComparer) : int;

パラメータ

  • index
    検索範囲の開始位置を示す 0 から始まるインデックス。

  • count
    検索する範囲の長さ。

  • value
    検索する Object 。値は null 参照 (Visual Basic では Nothing) に設定できます。

  • comparer
    要素を比較する場合に使用する IComparer 実装。

    または

    各要素の IComparable 実装である既定の比較演算子を使用する場合は null 参照 (Visual Basic では Nothing) 。

戻り値

value が見つかった場合は、並べ替えられた ArrayList 内の value の 0 から始まるインデックス。見つからなかった場合は、負の値。これは、 value の次に大きい要素のインデックスのビットごとの補数です。ただし、大きい要素が存在しない場合は、 Count のビットごとの補数です。

例外

例外の種類 条件
ArgumentException index および count が ArrayList 内の有効な範囲を示していません。

または

comparer が null 参照 (Visual Basic では Nothing) です。また、value と、 ArrayList の要素が、いずれも IComparable インターフェイスを実装していません。

InvalidOperationException comparer が null 参照 (Visual Basic では Nothing) で、value が ArrayList の要素と異なる型です。
ArgumentOutOfRangeException index が 0 未満です。

または

count が 0 未満です。

解説

比較演算子は、要素を比較する方法をカスタマイズします。たとえば、 CaseInsensitiveComparer インスタンスを比較演算子として使用して、大文字と小文字を区別しない文字列検索を実行できます。

comparer が提供されている場合、 ArrayList の要素は、指定した IComparer 実装を使用して、指定した値と比較されます。 ArrayList が comparer で定義された並べ替え順序に従って並べ替えられていない場合は、結果が正しくない可能性があります。

comparer が null 参照 (Visual Basic では Nothing) の場合は、要素自体または指定した値によって提供される IComparable の実装を使用して比較が行われます。 ArrayListIComparable の実装に従って並べ替えられていない場合は、結果が正しくない可能性があります。

null 参照 (Nothing) を任意の型と比較できます。このような比較を行っても、 IComparable を使用した場合に例外が生成されることはありません。並べ替え処理では、 null 参照 (Nothing) は、他のすべてのオブジェクトより小さいと見なされます。

ArrayList に同じ値の複数の要素が格納されている場合、メソッドは 1 つの要素だけを返します。必ずしも最初の要素ではなく、任意の要素が返されます。

指定した値が ArrayList に格納されていない場合、このメソッドは負の整数を返します。この負の整数に、ビットごとの補数演算 (~) を適用して、検索値よりも大きい最初の要素のインデックスを取得できます。値を ArrayList に挿入する場合、このインデックスを挿入ポイントとして使用して、並べ替え順を維持する必要があります。

このメソッドは O(log2 n) 操作です。 n は、所定の範囲内の要素数を示します。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

ArrayList クラス | ArrayList メンバ | System.Collections 名前空間 | ArrayList.BinarySearch オーバーロードの一覧 | IComparer | IComparable | カルチャを認識しないコレクションの操作の実行