When will you use Array over ArrayList?
Choosing between an array over ArrayList in Java depends on the specific requirements of your program. Here are some scenarios where using an array might be preferable over an ArrayList.

Table of Contents
1. Fixed Size: If you know the size of the collection at the time of creation and it won’t change throughout the program’s execution, using an array might be more efficient. Arrays have a fixed size, which can save memory compared to ArrayLists, which automatically resize themselves as elements are added or removed.
2. Performance: In scenarios where performance is critical and you need the fastest possible access to elements, arrays might be preferable. Arrays allow direct access to elements using index notation, whereas ArrayLists incur a small overhead due to method invocations for accessing elements.
3. Primitive Types: When dealing with primitive types (e.g., int, char), arrays can be more convenient than ArrayLists. Arrays can directly store primitive types, whereas ArrayLists require the use of wrapper classes (e.g., Integer, Character) for storing primitive types, which can introduce additional overhead.
4. Compatibility: In some cases, you might need to work with legacy code or APIs that expect arrays rather than ArrayLists. In such situations, using arrays becomes necessary for compatibility reasons.
Now, let’s provide a Java code example to illustrate when using an array might be preferable:
public class ArrayExample {
public static void main(String[] args) {
// Scenario 1: Known Fixed Size
int[] scores = new int[5]; // We know we need exactly 5 elements
scores[0] = 90;
scores[1] = 85;
scores[2] = 75;
scores[3] = 95;
scores[4] = 80;
// Scenario 2: Performance
long startTime = System.nanoTime();
for (int i = 0; i < scores.length; i++) {
System.out.println("Score " + (i + 1) + ": " + scores[i]);
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1000000; // Convert to milliseconds
System.out.println("Time taken to iterate through array: " + duration + " milliseconds");
// Scenario 3: Primitive Types
int[] numbers = {1, 2, 3, 4, 5}; // Array of primitive int type
// Scenario 4: Compatibility
String[] names = {"Alice", "Bob", "Charlie"}; // Required format for a specific API
}
}
Array over ArrayList Example
In this example, we demonstrate various scenarios where using an array might be preferable over an ArrayList. We initialize an array of scores with a fixed size, iterate through the array for performance testing, directly initialize an array of primitive types, and use an array to maintain compatibility with a specific API.