Difference Between Array vs ArrayList in Java: In this article, we will discuss the difference between Arrays and ArrayList in detail i.e.; Array vs ArrayList in Java
The difference will be based on the following parameters:
- Size (fixed or variable)
- Data type to be stored (primitive type or Object)
- Data-type bounded using Generics
- Adding or inserting or assigning elements
- Length or size
- Iterating through the elements
Lets us move on and discuss the key differences between these Array vs ArrayList in Java;
Array vs ArrayList in Java
Arrays |
ArrayList |
| Arrays are fixed in length for example, int arr = new int[7]; | ArrayList uses a dynamic resizable/grow-able array for example, ArrayList al = new ArrayList(); |
| It allows storing primitive types & Objects | It allows storing the only Object whereas primitive types like int, float, double, etc aren’t allowed but its equivalent wrapper Object types like Integer, Float, Double, etc are allowed |
| While adding elements to Array, a type is bounded i.e.; it allows to store element of any specific data-type or specific class trying to add another data-type, other than declared data-type results in throwing ArrayStoreException at runtime | Using Generics while declaring ArrayList makes it is type-bounded i.e.; if ArrayList is declared to accept only String or any specific class then adding any other type results in throwing a compile-time error |
| Storing elements inside Array is easy, as simple assignment operator is enough for example, intArr[0] = 10; | For adding element to ArrayList, use add() or addAll()methods of java.util.Collection interface |
| For Array, length variable provides the length of an Array | For ArrayList, size() method of java.util.Collection interface can be used to determine the size of an ArrayList |
For Array iteration, use the following options
| For ArrayList iteration, use the following options
|
| Performance-wise, it always stays constant over time | add() & get() operations nearly provide the same performance as that of ArrayBut with modifying operation like deletion will yield poor performance because it involves a lot of shifting
With capacity reaching maximum will result in again poor performance as it involves copying data from the old array into the new array |
| Example: Refer Arrays for details | Example: Refer ArrayList for details |
Example of Array vs ArrayList in Java
Example 1: Arrays Sort operation
PrimitveNaturalSortingOfArrays.java
package in.bench.resources.java.collection;
import java.util.Arrays;
public class PrimitveNaturalSortingOfArrays
{
public static void main(String[] args)
{
Integer[] intArrays = {31, 83, 53, 97, 29, 7, 13, 47, 79};
String[] strArrays = {"Karthi", "Vikram", "Vijay","Simbhu", "Suriya", "Ajith"};
System.out.println("Before sorting: Integer Arrays\n");
// printing Integer Arrays
System.out.println(Arrays.toString(intArrays));
// sorting Arrays using
Arrays.sort(intArrays);
System.out.println("\nAfter sorting: Integer Arrays\n");
// printing Integer Arrays
System.out.println(Arrays.toString(intArrays));
System.out.println("\n\n\nBefore sorting: String Arrays\n");
// printing Integer Arrays
System.out.println(Arrays.toString(strArrays));
// sorting Arrays using
Arrays.sort(strArrays);
System.out.println("\nAfter sorting: String Arrays\n");
// printing Integer Arrays
System.out.println(Arrays.toString(strArrays));
}
}
Output:
Before sorting: Integer Arrays [31, 83, 53, 97, 29, 7, 13, 47, 79] After sorting: Integer Arrays [7, 13, 29, 31, 47, 53, 79, 83, 97] Before sorting: String Arrays [Karthi, Vikram, Vijay, Simbhu, Suriya, Ajith] After sorting: String Arrays [Ajith, Karthi, Simbhu, Suriya, Vijay, Vikram]
Example 2: ArrayList operation
ArrayListAddAndRemove.java
package in.bench.resources.java.collection;
import java.util.ArrayList;
public class ArrayListAddAndRemove
{
public static void main(String[] args)
{
// creating ArrayList object of type String
ArrayList<String> al = new ArrayList<String>();
// adding elements to ArrayList object
al.add("Ajith Kumar");
al.add("Vijay Joseph");
al.add("Karthi Sivakumar");
al.add("Vikram Kennedy");
al.add("Dhanusk K Raja");
al.add("Suriya Sivakumar");
System.out.println("Iterating ArrayList values\n");
// Iterating using enhanced for-loop
for(String str : al){
System.out.println(str);
}
// removing element at 4th index
al.remove(4);
// to print all values of ArrayList
System.out.println("\n\nArrayList values after" + " removal at 4th index postion \n\n" + al);
}
}
Output:
Iterating ArrayList values Ajith Kumar Vijay Joseph Karthi Sivakumar Vikram Kennedy Dhanusk K Raja Suriya Sivakumar ArrayList values after removal at 4th index postion [Ajith Kumar, Vijay Joseph, Karthi Sivakumar, Vikram Kennedy, Suriya Sivakumar]