ArrayList クラス

必要に応じてサイズが動的に増加する配列を使用して、 IList インターフェイスを実装します。

この型のすべてのメンバの一覧については、ArrayList メンバ を参照してください。

System.Object
   System.Collections.ArrayList
      System.Windows.Forms.DomainUpDown.DomainUpDownItemCollection

<Serializable>
Public Class ArrayList   Implements IList, ICollection, IEnumerable, ICloneable
[C#]
[Serializable]
public class ArrayList : IList, ICollection, IEnumerable,   ICloneable
[C++]
[Serializable]
public __gc class ArrayList : public IList, ICollection,   IEnumerable, ICloneable
[JScript]
public
   Serializable
class ArrayList implements IList, ICollection, IEnumerable,   ICloneable

スレッドセーフ

この型の public static (Visual Basic では Shared) メンバは、マルチスレッド操作に対して安全です。インスタンス メンバがスレッド セーフになるかどうかは保証されていません。

ArrayList では、複数の読み込み操作が同時に発生しても、コレクションが変更されない限り問題ありません。 ArrayList を確実にスレッド セーフにするためには、すべての操作を Synchronized メソッドから返されるラッパー経由で実行する必要があります。

コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

解説

ArrayList の容量は、リストが保持できる要素の数です。 ArrayList に要素を追加すると、必要に応じて、再割り当てを行うことによって容量が自動的に増加します。容量を減らすには、 TrimToSize を呼び出すか、 Capacity プロパティを明示的に設定します。

このコレクションのインデックスは 0 から始まります。

ArrayList は、 null 参照 (Visual Basic では Nothing) を有効な値として受け取り、要素の重複を許可します。

使用例

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()
        myAL.Add("Hello")
        myAL.Add("World")
        myAL.Add("!")
        
        ' Displays the properties and values of the ArrayList.
        Console.WriteLine("myAL")
        Console.WriteLine(ControlChars.Tab + "Count:    {0}", myAL.Count)
        Console.WriteLine(ControlChars.Tab + "Capacity: {0}", myAL.Capacity)
        Console.Write(ControlChars.Tab + "Values:")
        PrintValues(myAL)
    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.
' 
' myAL
'     Count:    3
'     Capacity: 16
'     Values:    Hello    World    ! 

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

   public static void Main()  {

      // Creates and initializes a new ArrayList.
      ArrayList myAL = new ArrayList();
      myAL.Add("Hello");
      myAL.Add("World");
      myAL.Add("!");

      // Displays the properties and values of the ArrayList.
      Console.WriteLine( "myAL" );
      Console.WriteLine( "\tCount:    {0}", myAL.Count );
      Console.WriteLine( "\tCapacity: {0}", myAL.Capacity );
      Console.Write( "\tValues:" );
      PrintValues( myAL );
   }

   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.

myAL
    Count:    3
    Capacity: 16
    Values:    Hello    World    !
*/

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

void PrintValues( IEnumerable* myList );
 
void main()  {
 
    // Creates and initializes a new ArrayList.
    ArrayList* myAL = new ArrayList();
    myAL->Add(S"Hello");
    myAL->Add(S"World");
    myAL->Add(S"!");
 
    // Displays the properties and values of the ArrayList.
    Console::WriteLine( "myAL" );
    Console::WriteLine( "\tCount:    {0}", __box(myAL->Count) );
    Console::WriteLine( "\tCapacity: {0}", __box(myAL->Capacity) );
    Console::Write( "\tValues:" );
    PrintValues( myAL );
}
 
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.
 
 myAL
     Count:    3
     Capacity: 16
     Values:    Hello    World    !
 */

[JScript] 
import System;
import System.Collections;

// Creates and initializes a new ArrayList.
var myAL : ArrayList = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Add("!");

// Displays the properties and values of the ArrayList.
Console.WriteLine( "myAL" );
Console.WriteLine( "\tCount:    {0}", myAL.Count );
Console.WriteLine( "\tCapacity: {0}", myAL.Capacity );
Console.Write( "\tValues:" );
PrintValues( myAL );

 
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.
 
 myAL
     Count:    3
     Capacity: 16
     Values:    Hello    World    !
 */

必要条件

名前空間: System.Collections

プラットフォーム: 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

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

ArrayList メンバ | System.Collections 名前空間 | IList | カルチャを認識しないコレクションの操作の実行