As I see it, the advantages of a list over an array are pretty obvious:
- Generics provide more precise typing:
List<Integer>, List<? extends Number>, List<? super Integer>
. - A List interface has a bunch useful methods:
addAll
,remove
etc. While for arrays all standard operations except get/set must be performed in a procedure manner by passing it to a static method. - Collections offer different implementations like
ArrayList
,LinkedList
, unmodifieable and synchronized lists, which can be hidden under a common List interface. - OOB length control.
As disadvantages I can only mention the absence of syntactic sugar and a runtime type check. At the same time supporting of both structures requires frequent using of asList
and toArray
methods, which makes code less readable. So I am curious if there are any important benefits of using arrays that I miss.