If you have little backgroud of data structures (in C,C++ since in
Java everythign is readymade

) you would know the reason.
Lets understand these collection and their performance based on following aspects
1. Collection update: Insertion /Deletion :
2. Collection Access and Traversing
1. Insertion /deletion:
Have you ever heard of contiguous memory location? Arrays are maintained in Contiguous memory location,so any insertion /deletion result in re-alignment of all rest members...where as in linked list this overhead is out of question.
Suppose 0-1-2-3-4-5 ...n are memory references(addresses actually) holding the elements in Arraylist and linklist and if delete element 3rd one then
for
Linklist the memory Structure would be 0-1-2-4-5...n :
So time required for update is nearly constant
where as for
Array list it would be
0-1-2-4-5 ------> this would get re-alined by shifting all elements one by one and would be 0-1-2-3-4-....n
this is the overhead.....
So time required for update directly proportional to index of the Element undergoing change
2. Access /Traversing
Arraylist : being Randon access , memeber accessing ,
traversing time is almost constant (and FAST off course)....
linked list : where as in linked list being
sequential access directly proportional to Lengh of list.
Now if you understand both data structures you would understand which one should be used when...
Neither of them would always be better than other, both are meant for different requirements and scenarios.
you need to understand your need and then take the decision.
please go through data structures you would understand it better.. this is very much a candy question... ....