ArrayList(配列リスト)
ArrayListは、動的に大きさを変化させられる、いわゆる動的配列タイプのデータ構造を提供してくれるコレクションです。Array(配列)という名称なので、同一の型しか納められないような気がしてしまいますが、一つのArrayListに対して複数の型のオブジェクトを格納することができます。
ArrayListサンプルプログラムの解説
ArrayList al = new ArrayList(); // Array Listを用意
/* Array Listに要素を追加 */
al.Add(1);
al.Add('A');
al.Add("hoge");
al.Add(3.14);
al.Add(true);
Console.WriteLine("Array List Count: " + al.Count); // 要素数の表示
/* すべての要素について、内容とその型を表示させる */
for (int i = 0; i < al.Count; i++)
{
Console.WriteLine("{0,5} : {1}", al[i], al[i].GetType());
}
Array List Count: 5
1 : System.Int32
A : System.Char
hoge : System.String
3.14 : System.Double
True : System.Booleannt
ArrayListという名称上、リスト構造と同じように感じるかもしれませんが、要素へのアクセスにかかる時間はO(1)と、通常のリスト構造がとる要素へのアクセス時間O(n)に比べて高速です。
ArrayListの基本的な使い方
ArrayListの基本的な使い方は、
Add(value)メソッドを用いて末尾に要素を追加Insert(value)メソッドで指定位置に要素を追加ArrayList[N]でN番目のデータを呼び出す
という3つの手順です。さらにIndexOfやLastIndexOfメソッドを使うことで、要素の何番目に目的のデータが存在するかを調べることもできます。いらなくなった要素はRemoveメソッドを用いて削除し、すべての要素を削除するにはClearメソッドを用います。
ArrayListを使う上での注意点
ArrayListには、その要素をソートするためにSortメソッドが用意されていますが、このメソッドによって必ずしも意図したとおりに並べ替えられるとは限りません。というのも、今回のサンプルプログラムのようにどれが先頭に来るのか一見してわからないデータが格納されている場合があるからです。その場合にはSortメソッドで正しく並べ替えられないばかりか、ソート済みのデータを前提とするBinarySearchメソッドも正しく動作する保証がありませんのでご注意ください。
