As I see it, the advantages of a list over an array are pretty obvious:
List<Integer>, List<? extends Number>, List<? super Integer>
.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.ArrayList
, LinkedList
, unmodifieable and synchronized lists, which can be hidden under a common List interface.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.
Arrays are more efficient, both in terms of processing time and memory footprint. This particularly applies if you are operating on primitive types, such as int
or long
, since List
requires all elements to be wrapped in an Object
(such as Integer
or Long
). While the autoboxing features introduced by Java 5 reduces the amount of code you need for such wrapping and unwrapping, it does not remove the performance issues, as wrapper objects are still being created.
However, most applications probably do not have any performance bottlenecks related to these issues, so in most cases, List
and other collections should do fine. In these cases, the ease of programming outweighs the increase in memory or CPU usage, and List
is the right choice.
If your list does not change often, Lists add lots of extra weight to the object that you will never use. When you are trying to run something that needs to be optimized, this is helpful. This extra weight also makes things slower than they would be with just arrays. However, unless you know that you need the gains arrays give you, you should just be using Lists.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With