Difference between Array vs ArrayList in Java

What is the difference between Array and ArrayList is quite a common question among beginners especially those who started coding in C and C++ and prefer to use Array? Both Array and Array List are used to store elements, which can be either primitive or objects in case of Array and only objects in case of ArrayList in Java. The main difference between Array vs ArrayList in Java is the static nature of the Array and the dynamic nature of ArrayList. Once created you can not change the size of Array but ArrayList can re-size itself when needed. 

Another notable difference between ArrayList and Array is that Array is part of core Java programming and has special syntax and semantics support in Java, While ArrayList is part of the Collection framework along with other popular classes like Vector, Hashtable, HashMap or LinkedList.

Let's see some more difference between Array and ArrayList in Java in point form for better understanding.



Array vs ArrayList in Java

1) First and Major difference between Array and ArrayList in Java is that Array is a fixed-length data structure while ArrayList is a variable-length Collection class. You can not change the length of Array once created in Java but ArrayList re-size itself when gets full depending upon the capacity and load factor. 

Since ArrayList is internally backed by Array in Java, any resize operation in ArrayList will slow down performance as it involves creating a new Array and copying content from the old array to the new array.

2) Another difference between Array and ArrayList in Java is that you can not use Generics along with Array, as Array instance knows about what kind of type it can hold and throws ArrayStoreException if you try to store type which is not convertible into the type of Array. ArrayList allows you to use Generics to ensure type safety.



3) You can also compare Array vs ArrayList on How to calculate the length of Array or size of ArrayList. All kinds of Array provides length variable which denotes the length of Array while ArrayList provides size() method to calculate the size of ArrayList in Java.

4) One more major difference between ArrayList and Array is that, you can not store primitives in ArrayList, it can only contain Objects. While Array can contain both primitives and Objects in Java. Though Autoboxing of Java 5 may give you an impression of storing primitives in ArrayList, it actually automatically converts primitives to Object. e.g.

ArrayList<Integer> integerList = new ArrayList<Integer>();
integerList.add(1); //here we are not storing primitive in ArrayList, instead autoboxing will convert int primitive to Integer object


5) Java provides add() method to insert an element into ArrayList and you can simply use the assignment operator to store element into Array e.g. In order to store Object to specified position use

Object[] objArray = new Object[10];
objArray[1] = new Object();



6) One more difference on Array vs ArrayList is that you can create an instance of ArrayList without specifying size, Java will create Array List with default size but it's mandatory to provide the size of Array while creating either directly or indirectly by initializing Array while creating it. By the way, you can also initialize ArrayList while creating it.

Difference between Array vs ArrayList in Java



Difference between Array and ArrayList in Java with exampleThat's all on the difference between Array and ArrayList in Java. In terms of performance Array and ArrayList provides similar performance in terms of constant time for adding or getting element if you know index. 

Though automatic resize of ArrayList may slow down insertion a bit Both Array and ArrayList is the core concept of Java and any serious Java programmer must be familiar with these differences between Array and ArrayList or in more general Array vs List.


Other Java ArrayList Tutorials you may find useful

20 comments:

  1. Very informative! Thumbs up!

    ReplyDelete
  2. Good Tutorial , keep it up
    thanks

    ReplyDelete
  3. Very good Tutorial,keep it up .
    Thank you

    ReplyDelete
  4. very very good tutorial

    ReplyDelete
  5. Very helpful and straight to the point. Thanks a bunch!

    ReplyDelete
  6. Very Helpful thanks

    ReplyDelete
  7. nice one dude..keep it up

    ReplyDelete
  8. Very good dude, thumbs up!

    ReplyDelete
  9. Make sense dude. Im Arjay.

    ReplyDelete
  10. thanks from the future :)

    ReplyDelete
  11. Thanks for sharing this once again..

    ReplyDelete
  12. I guess another difference is the way of selecting element. Array select element by [] and take O(1), ArrayList select by get(...) and take O(N)

    ReplyDelete

Feel free to comment, ask questions if you have any doubt.