Java Collections - Array
Array is a fundamental construct in any programming languages, which stores a fixed-size sequential collection of elements of the same type.
An array is used to store a collection of data, but it is often more useful to think of an array as a collection of variables of the same type.
Tables
- Array Declaration
- Array Instantiation
- Java Array Default Values
- Iterating a Java Array
- Multidimensional Arrays
- Sort a Java array
- Copy a Java array
- The Arrays Class
Array Declaration ⤴
Syntax for declaring an array variable in Java
dataType[] arrayRefVar; // preferred way
dataType arrayRefVar[]; // for accommodate C/C++ programmers, but not preferred,
Array Instantiation ⤴
Create an array by using the new operator with syntax:
arrayRefVar = new dataType[arraySize];
The above statement does two things:
- It creates an array using new dataType[arraySize];
- It assigns the reference of the newly created array to the variable arrayRefVar.
So, we can combine: declaring an array variable, creating an array and assigning the reference of the array to the variable in one statement
dataType[] arrayRefVar = new dataType[arraySize];
or
dataType[] arrayRefVar = {value0, value1, ..., valuek};
The array elements are accessed through the index. Array indices are 0-based; that is they start from 0 to arrayRefVar.length-1.
An array index is always a whole number and it can be a int, short, byte, or char.
Once an array is instantiated, it size cannot be changed.
Its size can be accessed by using the length field like .length. It is a java final instance field.
All java arrays implements Cloneable and Serializable.
ArrayIndexOutOfBoundsException ⤴
One popular exception for java beginners is ArrayIndexOutOfBoundsException. You get this exception when you access an array with an illegal index
Java Array Default Values ⤴
After instantiate an array, default values are automatically assigned to it in the following manner.
- byte - default value is zero.
- short - default value is zero.
- int - default value is zero.
- long - default value is zero, 0L.
- float - default value is zero, 0.0f.
- double - default value is zero, 0.0d.
- char - default value is null, ‘\u0000’.
- boolean - default value is false.
- reference types - default value is null.
Notice: one popular cause of NullPointerException is accessing a null from a java array.
Iterating a Java Array ⤴
public class IterateJavaArray {
public static void main(String args[]) {
int marks[] = {98, 95, 91, 93, 97};
//java array iteration using enhanced for loop
for (int value : marks){
System.out.println(value);
}
}
}
Multidimensional Arrays ⤴
When a component type itself is a array type, then it is a multidimensional array.
int[] marks, fruits, matrix[];
In the above code, matrix is a multidimensional array. You have to be careful in this type of java array declaration.
Note: A clone of a java multidimensional array will result in a shallow copy.
Iterate a java multidimensional array ⤴
public class IterateMultiDimensionalJavaArray {
public static void main(String args[]) {
int sudoku[][] = { { 2, 1, 3 }, { 1, 3, 2 }, { 3, 2, 1 } };
for (int row = 0; row < sudoku.length; row++) {
for (int col = 0; col < sudoku[row].length; col++) {
int value = sudoku[row][col];
System.out.print(value);
}
System.out.println();
}
}
}
Sort a Java array ⤴
Java api Arrays contains static methods for sorting. It is a best practice to use them always to sort an array.
import java.util.Arrays;
public class ArraySort {
public static void main(String args[]) {
int marks[] = { 98, 95, 91, 93, 97 };
System.out.println("Before sorting: " + Arrays.toString(marks));
Arrays.sort(marks);
System.out.println("After sorting: " + Arrays.toString(marks));
}
}
//Before sorting: [98, 95, 91, 93, 97]
//After sorting: [91, 93, 95, 97, 98]
Copy a Java array ⤴
The following options to copy a java array:
- We can use the util calls Arrays. It contains copyOf method for different java types.
- The most used class by a java beginner System has a static method to copy an array.
- Using its clone method, you can copy a java array. If the java array is multidimensional, it will be a shallow copy.
- Write your own for loop iterating through the java array and copy elements yourself. (least preferred).
The Arrays Class ⤴
The java.util.Arrays class contains various static methods for sorting and searching arrays, comparing arrays, and filling array elements. These methods are overloaded for all primitive types.
- public static int binarySearch(Object[] a, Object key). The array must be sorted prior to making this call.
- public static boolean equals(long[] a, long[] a2)
- public static void fill(int[] a, int val)
- public static void sort(Object[] a)
Leave a Comment