SortedList.IndexOfKey メソッド
SortedList 内の指定したキーの、0 から始まるインデックス番号を返します。
Public Overridable Function IndexOfKey( _
ByVal key As Object _) As Integer
[C#]
public virtual int IndexOfKey(objectkey);
[C++]
public: virtual int IndexOfKey(Object* key);
[JScript]
public function IndexOfKey(
key : Object) : int;
パラメータ
- key
SortedList 内で検索されるキー。
戻り値
key が SortedList に存在する場合は、key の 0 から始まるインデックス番号。それ以外の場合は -1。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | key が null 参照 (Visual Basic では Nothing) です。 |
InvalidOperationException | 比較演算子が例外をスローしました。 |
解説
SortedList の要素は、 SortedList が作成されるときに指定された IComparer の特定の実装か、キー自体が提供する IComparable 実装のいずれかに従って並べ替えられます。
並べ替え順に基づいたインデックス順。要素を追加すると、その要素は正しい並べ替え順に従って SortedList に挿入され、それに応じてインデックスも調整されます。要素が削除されると、それに応じてインデックスも調整されます。したがって、特定のキーと値の組み合わせのインデックスは、要素が SortedList で追加または削除されるときに変更されることがあります。
このメソッドはバイナリ検索アルゴリズムを使用します。したがって、平均検索時間は Log2 (n) に比例します。ここで、 n は Count です。
使用例
[Visual Basic, C#, C++] SortedList 内のキーまたは値のインデックスを確認する方法の例を次に示します。
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic
Public Class SamplesSortedList
Public Shared Sub Main()
' Creates and initializes a new SortedList.
Dim mySL As New SortedList()
mySL.Add(1, "one")
mySL.Add(3, "three")
mySL.Add(2, "two")
mySL.Add(4, "four")
mySL.Add(0, "zero")
' Displays the values of the SortedList.
Console.WriteLine("The SortedList contains the " & _
"following values:")
PrintIndexAndKeysAndValues(mySL)
' Searches for a specific key.
Dim myKey As Integer = 2
Console.WriteLine("The key ""{0}"" is at index {1}.", myKey, _
mySL.IndexOfKey(myKey))
' Searches for a specific value.
Dim myValue As String = "three"
Console.WriteLine("The value ""{0}"" is at index {1}.", myValue, _
mySL.IndexOfValue(myValue))
End Sub
Public Shared Sub PrintIndexAndKeysAndValues(myList As SortedList)
Console.WriteLine(ControlChars.Tab & "-INDEX-" & ControlChars.Tab & _
"-KEY-" & ControlChars.Tab & "-VALUE-")
Dim i As Integer
For i = 0 To myList.Count - 1
Console.WriteLine(ControlChars.Tab & "[{0}]:" & ControlChars.Tab & _
"{1}" & ControlChars.Tab & "{2}", i, myList.GetKey(i), _
myList.GetByIndex(i))
Next i
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' The SortedList contains the following values:
' -INDEX- -KEY- -VALUE-
' [0]: 0 zero
' [1]: 1 one
' [2]: 2 two
' [3]: 3 three
' [4]: 4 four
'
' The key "2" is at index 2.
' The value "three" is at index 3.
[C#]
using System;
using System.Collections;
public class SamplesSortedList {
public static void Main() {
// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add( 1, "one" );
mySL.Add( 3, "three" );
mySL.Add( 2, "two" );
mySL.Add( 4, "four" );
mySL.Add( 0, "zero" );
// Displays the values of the SortedList.
Console.WriteLine( "The SortedList contains the following values:" );
PrintIndexAndKeysAndValues( mySL );
// Searches for a specific key.
int myKey = 2;
Console.WriteLine( "The key \"{0}\" is at index {1}.", myKey, mySL.IndexOfKey( myKey ) );
// Searches for a specific value.
String myValue = "three";
Console.WriteLine( "The value \"{0}\" is at index {1}.", myValue, mySL.IndexOfValue( myValue ) );
}
public static void PrintIndexAndKeysAndValues( SortedList myList ) {
Console.WriteLine( "\t-INDEX-\t-KEY-\t-VALUE-" );
for ( int i = 0; i < myList.Count; i++ ) {
Console.WriteLine( "\t[{0}]:\t{1}\t{2}", i, myList.GetKey(i), myList.GetByIndex(i) );
}
Console.WriteLine();
}
}
/*
This code produces the following output.
The SortedList contains the following values:
-INDEX- -KEY- -VALUE-
[0]: 0 zero
[1]: 1 one
[2]: 2 two
[3]: 3 three
[4]: 4 four
The key "2" is at index 2.
The value "three" is at index 3.
*/
[C++]
#using <mscorlib.dll>
#using <system.dll>
using namespace System;
using namespace System::Collections;
void PrintIndexAndKeysAndValues( SortedList* myList ) {
Console::WriteLine( S"\t-INDEX-\t-KEY-\t-VALUE-" );
for ( int i = 0; i < myList->Count; i++ ) {
Console::WriteLine( S"\t[{0}]:\t{1}\t{2}",
__box(i), myList->GetKey(i), myList->GetByIndex(i) );
}
Console::WriteLine();
}
int main() {
// Creates and initializes a new SortedList.
SortedList* mySL = new SortedList();
mySL->Add( __box(1), S"one" );
mySL->Add( __box(3), S"three" );
mySL->Add( __box(2), S"two" );
mySL->Add( __box(4), S"four" );
mySL->Add( __box(0), S"zero" );
// Displays the values of the SortedList.
Console::WriteLine( S"The SortedList contains the following values:" );
PrintIndexAndKeysAndValues( mySL );
// Searches for a specific key.
int myKey = 2;
Console::WriteLine( S"The key \"{0}\" is at index {1}.",
__box(myKey), __box(mySL->IndexOfKey( __box(myKey) )) );
// Searches for a specific value.
String* myValue = S"three";
Console::WriteLine( S"The value \"{0}\" is at index {1}.",
myValue, __box(mySL->IndexOfValue( myValue )) );
}
/*
This code produces the following output.
The SortedList contains the following values:
-INDEX- -KEY- -VALUE-
[0]: 0 zero
[1]: 1 one
[2]: 2 two
[3]: 3 three
[4]: 4 four
The key "2" is at index 2.
The value "three" is at index 3.
*/
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
SortedList クラス | SortedList メンバ | System.Collections 名前空間 | ContainsKey | IndexOfValue | カルチャを認識しないコレクションの操作の実行