EDIT: You can't directly insert based on an index in a List, you can only Set(Modify)/Get a value to an index. If it exists
You can use indexing with an ArrayList as well, but use a Generic List instead of ArrayList. Its type safe. and Also support insertion based on index.
With ArrayList you can use the index
List<string> list = new List<string>();
list.Add("first element");
list.Add("2nd element");
Console.Write(list[0]);
Console.Write(list[1]);
list[0] = "AAA - element"; //In actual its a modification,
//if there is no element, there will b exception
list[1] = "BBB - element";
Remember you can't directly set element of a list based on an index.