Developers and programmers are choosing ArrayList over traditional Java arrays. And, do you know why? The most obvious reason is that an ArrayList in Java is resizable. Unlike standard arrays, an ArrayList grows upon the addition of new elements. An array is fixed in size, and once it is full, you cannot add more items to it.
On the contrary, an ArrayList in Java dynamically grows and shrinks, allowing more flexibility and functionality as compared to the standard arrays. Let us learn more about ArrayList and why they are preferred to regular Java arrays.
What is ArrayList in Java?
An ArrayList is a class in Java that extends AbstractList and executes the List interface of Java. A collection of dynamic elements in size and behavior requires a data structure that can handle its growth and shrinkage to add and remove elements, respectively.
An ArrayList in Java provides support for such a resizable list of elements with the freedom of addition, removal, finding, sorting, and replacement of objects in the list. As mentioned previously, an ArrayList will automatically stretch on the addition of new elements and reduce in size when elements are removed.
Hierarchical order of ArrayList Class
An ArrayList extends Java’s AbstractList and implements the List interface. The List interface, on the other hand, extends the Iterable and Collection interfaces in a hierarchical order.
Features of ArrayList
An ArrayList in Java has the following features:
- Dynamic and resizable: An ArrayList can grow in size on adding more elements and likewise, shrink on the removal of elements.
- Index-based: Index begins with 0, and random accession of elements is allowed using their index positions.
- Ordered: By default, the elements in an ArrayList preserve the ordering in which they were initially added to the list.
- Non-synchronized: By default, an ArrayList is non-synchronized. Thus, programmers must use vector class or synchronized keyword as needed.
- Duplicates and Nulls: Unlike in sets, duplicate elements can be added to an ArrayList. It also permits null values.
- Boxed type: An ArrayList with primitive types like int and char cannot be created. It only allows boxed types, such as Integer, Character, and Boolean.
How does ArrayList work?
The implementation of the ArrayList class is done around a backing array. Modifications like addition or removal of elements in an ArrayList are reflected in the backing array. All methods in ArrayList access the backing array to get or set elements in the array. So basically, ArrayList is a resizable array implementation in Java.
Constructors in ArrayList
Here, we will briefly describe the constructors of ArrayList in Java:
- ArrayList( ): For building an empty ArrayList.
- ArrayList(Collection c): For building an ArrayList that is initialized with collection ‘c’ elements.
- ArrayList(int capacity): For building an ArrayList that has a specified initial capacity. Capacity is the term employed for the size of the underlying array used for storing the elements. When elements are added to the ArrayList, the capacity will grow automatically.
Methods in ArrayList
In this section, we will give a brief description of some methods in ArrayList:
- ArrayList add( ): It is used for adding elements to the ArrayList. If the index is not specified, new elements are added after the last element is already present in the ArrayList.
Syntax: add(Object o)
- ArrayList remove( ): It is used for removing a specified element. The size of the ArrayList is reduced after the removal of the element.
Syntax: remove(Object o)
- Java array size: This method gives the number of elements present in the ArrayList. The first element has index 0.
Syntax: int size( )
- ArrayList contains: If the ArrayList contains a specified element, then this method will return true.
Syntax: Boolean contains(Object o)
- ArrayList clear( ): It is used for removing all the elements in the ArrayList.
- ArrayList clone( ): It is used for creating a shallow copy of the ArrayList, which copies only the object references.
- ArrayList sort( ): It is used for sorting the ArrayList as per the order of the Comparator instance.
- ArrayList replaceAll( ): It is used for removing all the elements from the list other than those present in the specified method argument collection.
ArrayList in Java has the edge over the regular Java arrays. ArrayList can dynamically grow and shrink to accommodate a resizable collection of elements. And, this demonstrates the greater functionality and flexibility of ArrayList as compared to a standard array. All in all, Java’s ArrayList addresses the drawbacks that are usually encountered with the use of arrays and makes programming in Java a lot easier.
If you’re interested to learn more about full-stack software development, check out upGrad & IIIT-B’s PG Diploma in Full-stack Software Development which is designed for working professionals and offers 500+ hours of rigorous training, 9+ projects, and assignments, IIIT-B Alumni status, practical hands-on capstone projects & job assistance with top firms.
What is the difference between a List and an ArrayList?
The most significant distinction between a List and an ArrayList is that the former is an interface, while the latter is a class. The List interface is employed to construct a list of items with linked index numbers. The ArrayList class is intended to build a dynamic array of items. The list interface produces a succession of elements that are identified and retrieved using the index. ArrayList forms an array of items that can expand in size over time. Furthermore, the List interface extends the Collection framework, whereas the ArrayList class extends AbstractList and implements the List interface.
What is the difference between an Array and an ArrayList?
The most significant distinction between an Array and an ArrayList is that an Array can be single or multidimensional, but an ArrayList can only be single-dimensional. The length of an Array is fixed and static, but the length of an ArrayList is dynamic and may be raised or lowered as needed. Primitive data types can be directly stored in Arrays, which are unusual objects. Primitive data types are not directly added to ArrayLists or unlikely arrays; instead, autoboxing and unboxing are used to add them indirectly. The assignment operator (+) can be used to add an item to an array. The function add() is used to add an item to an ArrayList using a specific manner.
In Java, why is ArrayList referred to as a dynamically growing array?
ArrayList is a resizable array that can expand and contract in memory as needed. With an initial capacity, it is dynamically formed. Because ArrayList employs a dynamic array implicitly for storing a set of elements, it is referred to as a dynamically growing array in Java. Suppose that the original capacity of the array is surpassed. In that case, a new array with a bigger capacity is immediately generated, and all of the existing array's items are transferred to the new array. The size of the array list can be automatically decreased when elements are removed from it.