An array can be of any data type and contain one data type while array list can contain any data type in the form of the object.
With array you can not dynamically increase or decrease the size of array dynamically. You must the define the size of the array. You can change the size of the array with redim statement but still you have to define type. While with array list you can make list of any sizes. When a element or object is added to array list it size is automatically increase the capacity of the array list.
once you delete the item in array it kept that one as empty like a="" but in case of arraylist aindex occupies the position of a and also if you try to insert a value array will throw error if any items reside inside but in case of arraylist a is inserted in same position but at the same time position of a become a if there is already an item exists