Are you curious to know the difference between ‘Array vs ArrayList in Java?‘ Java is a quite vast programming language and you will learn so many concepts while studying your Java course. An array is an important concept. Let us read this article and know the difference between Array and Array List in Java.ย Still, if you have any questions related to an array or any issues while solving your Java assignment then you can get help with Java homework onlineย by hiring the proficient experts at CodingZap.
To understand the difference between arrays and ArrayList in Java, letโs first take a look at their basic features in brief.
ย
What are Arrays? Read Below
ย
Arrays are index-based linear data structures that store the elements in a linear fashion, which can be efficiently retrieved based on their indexes. They store the elements in contiguous memory locations, thus enabling easy access and retrieval of the elements.
Arrays have a fixed size, which is explicitly declared at the time of initialization. Once an array is initialized, its size will remain the same, which proves to be an inconvenience if we wish to add or remove some elements dynamically.
For eg, Suppose youโre throwing a party, and you wish to keep track of all the guests in an index-based format. If you are uncertain about the number of guests who will attend a party in advance, it can be challenging to handle the data using an array effectively.
This limitation is where an Array List proves to be the most useful, apart from the numerous other benefits it offers.
ย
What is an ArrayList? Read Below For More Information
ย
ArrayList is also an index-based linear data structure, similar to an array, whose elements can be effectively retrieved based on their indexes. However, the size of an ArrayList is not fixed and can grow and shrink dynamically as we add or remove elements.
This means that we donโt need to know the size of our collection of elements as a pre-requisite and can let it grow dynamically as needed.
This time when you use an ArrayList to track your guests, you can let the guest list expand indefinitely and still keep track of the guests easily and perform the necessary operations. You must learn to print an array in Java before deep diving into this topic.
Let us now write some basic code to understand the fundamental traits of arrays and ArrayLists.
Code to understand the fundamental traits of arrays and ArrayLists:
ย
import java.util.*; public class Main { public static void main(String[] args) { // #1 Declaration and initialization // we declare an array of int int[] array; // the array is initialized and given a size of 5 array = new int[5]; // we declare an arraylist of integer ArrayList<Integer> arrayList; // the arraylist in initialized (without declaring the size) arrayList = new ArrayList<>(); // #2 Adding elements // we assign values to the elements at the specific index using the assignment operator (=) for(int i=0; i<array.length; i++){ array[i] = i*10; } // we use the add function to dynamically add elements into the arrayList for(int i=100; i<=110; i++){ arrayList.add(i); } // #3 Printing values // we can access the elements of an array using index operators (square brackets) System.out.print("Array: "); for(int i=0; i<array.length; i++){ System.out.print(array[i] +" "); } // we can access the elements of the arraylist using the get function and their index System.out.print("\nArrayList: "); for(int i=0; i<arrayList.size(); i++){ System.out.print(arrayList.get(i) +" "); } // we remove the element at the 10th index of the arrayList and see the result arrayList.remove(2); System.out.print("\nUpdated ArrayList: "); for(int i=0; i<arrayList.size(); i++){ System.out.print(arrayList.get(i) +" "); } } }
Output:
ย
Array: 0 10 20 30 40
ArrayList: 100 101 102 103 104 105 106 107 108 109 110
Updated ArrayList: 100 101 103 104 105 106 107 108 109 110
ย
What Is The Process For the Declaration of an Array and an Array List in Java?
ย
In the above program, we start with the declaration and initialization of an array and an ArrayList in Java. We use an array of primitive data-type โintโ, whereas we use an ArrayList of the โIntegerโ class in Java. This is done because we canโt use primitive data types in an ArrayList, but only objects. โIntegerโ is a wrapper class of the primitive data type โintโ in Java, and thus is used to create an ArrayList of integers.
If you’re curious to know about how the algorithms are implemented then you can check out our article on “Quick Sort Algorithm” and learn about it.
ย
What Is The Process For the Initialization of an Array and an Array List in Java?
ย
The array is initialized using the โnewโ keyword, along with the size of the array needed. The ArrayList is also initialized using the โnewโ keyword, but it is clearly evident that we havenโt stated the size of our ArrayList. Thus the elements in an ArrayList can be added dynamically.
ย
ย
Check out our article on “How to Initialize a Vector in C++?” to get more information about the initialization concept.
How To Add Elements?
ย
We further continue to add 5 integers in the array, and 11 integers in the ArrayList. The values in an array can only be assigned using the assignment operator (=), with the value stated against its desired index. ArrayList provides a more flexible approach to adding value to the list. We can use the โadd()โ function whenever we wish to add a new element, and the value will automatically be placed at the end of the list, associated with its respective index.
ย
How To Retrieve Elements?
ย
We print the elements stored in the array and ArrayList for verification. The elements in the arrays can be accessed using the index operators (square brackets) and the index. We use the โget()โ function of the ArrayList to retrieve the elements at a specific index.
Also, if you’re curious to know the procedure to reverse a list in Java, then you must read our blogs.
ย
How To Remove Elements?
ย
We finally demonstrate how elements can be removed in an ArrayList. One of the many ways is depicted above, in which we state the index of the element we wish to remove from the list. In the above example, we remove the element at the 2nd index of the list, and in the updated output we can observe that the previous 2nd index element โ102โ is missing from the list. We cannot shrink the size of arrays in the same manner.
ย
What Is The Difference between Arrays and ArrayLists in Java?
ย
You must have got an understanding of the fundamental difference between an array and an ArrayList in Java. Letโs now look at their differences in a little more depth:
ย
1. Fixed vs dynamic size
ย
The size of an array is fixed and explicitly stated at the time of initialization. Once initialized, the size of the array can never be changed.
However, the size of an ArrayList is not fixed, which continues to grow or shrink as the elements are added or removed.
ArrayList internally uses an array to store its elements. A basic understanding of the internal working of ArrayLists is as follows:
ย
- ArrayList is initialized, and internally an array is created with a default size (say 10)
- The elements are added one by one in the ArrayList linearly
- Once 10 elements are added, and we wish to add more elements, a new array will be created with double the size of the previous array (in this case, 20). All the elements from the previous array will be copied into the new array, and the new element will be added at the 11th position. This is an O(n) operation and often proves costly.
It is thus often advised to declare a size of ArrayLists at the time of initialization, which we believe is sufficient. The ArrayList can still grow if needed, but we can save ourselves from the copying operation that goes on internally and save time.
ย
2. How Arrays and ArrayLists are Provided by Java?
ย
Arrays are provided as a language-level feature in Java. They donโt require any specific methods for operations such as assigning and accessing the elements. These operations can easily be done using the index and assignment operators ( equals, square brackets respectively).
ArrayLists are provided as part of the Collections Framework in Java, which is a collection of various classes and interfaces implementing the commonly used data structures. ArrayList is a class that extends the AbstractList class and implements the List interface. We need specific methods to add and access the elements of the ArrayList.
3. Type of elements
ย
Arrays can store primitive data types like int, float, etc as well as objects.
ArrayLists can only store objects. It doesnโt support primitive data types in Java. Instead, we are provided with the wrapper classes of the primitive data types, such as โIntegerโ for โintโ, and โFloatโ for โfloatโ. They encapsulate the primitive data types in a class and provide object-oriented representations for each. They also provide some methods like parseInt(), and compareInt() which are not supported by the primitive data types.
Since Java 5, if we add an integer to an ArrayList, it will automatically be converted to the Integer object type. This is called auto-boxing. It can similarly be unboxed when converting Integer to int.
Example:
int num = 5; // an int data-type ArrayList<Integer> al = new ArrayList<>(); // declaring an ArrayList of Integers al.add(num); //Auto-boxing: num will automatically be converted to Integer class and stored in ArrayList int x =al.get(0); // Unboxing: the returned Integer object will automatically be converted to int
4. Use of generics
ย
Arrays are homogenous data structures and can only store similar data types. Generics can not be directly used in arrays, because of which we canโt store different elements. To enforce generics in an array, we will need to create a wrapper class. Instead, we simply use ArrayLists.
However, ArrayLists can store homogenous as well as heterogeneous elements, with the use of Generics. Generics allow us to specify the type of elements that an ArrayList can hold, providing type safety and compile-time checks.
ย
5. Memory Allocation
ย
Arrays store their elements in contiguous memory locations. Since the memory locations are adjacent, accessing elements by an index is a constant-time operation (O(1)).
ArrayLists donโt store their elements in contiguous memory locations. Internally, ArrayList uses an array to store its elements, but the elements may be scattered throughout the internal array. The ArrayList dynamically manages the elements in the array, and grows or shrinks the array as needed.
ArrayLists are however less efficient for basic operations on primitive data types. An array gives better results in such cases.
6. In-built functions
ย
Both arrays and ArrayLists come packed with built-in functions to manipulate the elements.
Arrays have methods like โArrays.sort()โ for sorting, โArrays.copyOf()โ to create the copies of arrays and a few more.
However, the ArrayList is bundled with an extensive set of built-in functions, which cater to a wide range of uses. ArrayLists benefit from the broader functionality provided by the Java Collections framework, which includes various utility methods for sorting, searching, and manipulating collections.
Conclusion
ย
We explored the differences between arrays and Array Lists in Java. We learned that arrays are fixed in size and can only store elements of the same data type. On the other hand, Array Lists are dynamic in size and can store both homogeneous and heterogeneous elements using Generics.
We discovered that arrays store elements in contiguous memory locations, allowing for efficient traversal, while Array Lists manage elements internally using an array that can grow or shrink dynamically. Also discussed is how Array Lists provide a wider range of built-in functions compared to arrays, thanks to the Java Collections framework.
We, therefore, gained a deeper understanding of the features and characteristics of arrays and Array Lists in Java.
So, hope you have liked this piece of article. Share your thoughts in the comments section and let us know if we can improve more. Still, if you have any doubts and looking for programming homework help thenย Contact Us!
ย