ARRAY IN JAVA
Java provides a data structure, the array, 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.
Instead of declaring individual variables, such as number0, number1, ..., and
number99, you declare one array variable such as numbers and use numbers[0],
numbers[1], and ..., numbers[99] to represent individual variables.
This tutorial introduces how to declare array variables, create arrays, and process
arrays using indexed variables.
Declaring Array Variables
To use an array in a program, you must declare a variable to reference the array,
and you must specify the type of array the variable can reference. Here is the
syntax for declaring an array variable −
Syntax
dataType[] arrayRefVar; // preferred way.
or
dataType arrayRefVar[]; // works but not preferred way.
Note − The style dataType[] arrayRefVar is preferred. The style dataType
arrayRefVar[] comes from the C/C++ language and was adopted in Java to
accommodate C/C++ programmers.
Example
The following code snippets are examples of this syntax −
double[] myList; // preferred way.
or
double myList[]; // works but not preferred way.
Creating Arrays
You can create an array by using the new operator with the following syntax −
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.
Declaring an array variable, creating an array, and assigning the reference of the
array to the variable can be combined in one statement, as shown below −
dataType[] arrayRefVar = new dataType[arraySize];
Alternatively you can create arrays as follows −
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 [Link]-1.
Example
Following statement declares an array variable, myList, creates an array of 10
elements of double type and assigns its reference to myList −
double[] myList = new double[10];
Following picture represents array myList. Here, myList holds ten double values and
the indices are from 0 to 9.
Processing Arrays
When processing array elements, we often use either for loop or foreach loop
because all of the elements in an array are of the same type and the size of the
array is known.
Example
Here is a complete example showing how to create, initialize, and process arrays −
Live Demo
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < [Link]; i++) {
[Link](myList[i] + " ");
}
// Summing all elements
double total = 0;
for (int i = 0; i < [Link]; i++) {
total += myList[i];
}
[Link]("Total is " + total);
// Finding the largest element
double max = myList[0];
for (int i = 1; i < [Link]; i++) {
if (myList[i] > max) max = myList[i];
}
[Link]("Max is " + max);
}
}
This will produce the following result −
Output
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
The foreach Loops
JDK 1.5 introduced a new for loop known as foreach loop or enhanced for loop,
which enables you to traverse the complete array sequentially without using an
index variable.
Example
The following code displays all the elements in the array myList −
Live Demo
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (double element: myList) {
[Link](element);
}
}
}
This will produce the following result −
Output
1.9
2.9
3.4
3.5
Passing Arrays to Methods
Just as you can pass primitive type values to methods, you can also pass arrays to
methods. For example, the following method displays the elements in an int array −
Example
public static void printArray(int[] array) {
for (int i = 0; i < [Link]; i++) {
[Link](array[i] + " ");
}
}
You can invoke it by passing an array. For example, the following statement invokes
the printArray method to display 3, 1, 2, 6, 4, and 2 −
Example
printArray(new int[]{3, 1, 2, 6, 4, 2});
Returning an Array from a Method
A method may also return an array. For example, the following method returns an
array that is the reversal of another array −
Example
public static int[] reverse(int[] list) {
int[] result = new int[[Link]];
for (int i = 0, j = [Link] - 1; i < [Link]; i++,
j--) {
result[j] = list[i];
}
return result;
}
The Arrays Class
The [Link] class contains various static methods for sorting and searching
arrays, comparing arrays, and filling array elements. These methods are overloaded
for all primitive types.
[Link]. Method & Description
1
public static int binarySearch(Object[] a, Object key)
Searches the specified array of Object ( Byte, Int , double, etc.) for the specified value using
the binary search algorithm. The array must be sorted prior to making this call. This returns
index of the search key, if it is contained in the list; otherwise, it returns ( – (insertion point +
1)).
2
public static boolean equals(long[] a, long[] a2)
Returns true if the two specified arrays of longs are equal to one another. Two arrays are
considered equal if both arrays contain the same number of elements, and all corresponding
pairs of elements in the two arrays are equal. This returns true if the two arrays are equal.
Same method could be used by all other primitive data types (Byte, short, Int, etc.)
3
public static void fill(int[] a, int val)
Assigns the specified int value to each element of the specified array of ints. The same
method could be used by all other primitive data types (Byte, short, Int, etc.)
4
public static void sort(Object[] a)
Sorts the specified array of objects into an ascending order, according to the natural
ordering of its elements. The same method could be used by all other primitive data types (
Byte, short, Int, etc.)
The ArrayList class extends AbstractList and implements the List interface.
ArrayList supports dynamic arrays that can grow as needed.
Standard Java arrays are of a fixed length. After arrays are created, they cannot
grow or shrink, which means that you must know in advance how many elements
an array will hold.
Array lists are created with an initial size. When this size is exceeded, the collection
is automatically enlarged. When objects are removed, the array may be shrunk.
Following is the list of the constructors provided by the ArrayList class.
[Link]. Constructor & Description
1
ArrayList( )
This constructor builds an empty array list.
2
ArrayList(Collection c)
This constructor builds an array list that is initialized with the elements of the collection c.
3
ArrayList(int capacity)
This constructor builds an array list that has the specified initial capacity. The capacity is the
size of the underlying array that is used to store the elements. The capacity grows
automatically as elements are added to an array list.
Apart from the methods inherited from its parent classes, ArrayList defines the
following methods −
[Link]. Method & Description
1
void add(int index, Object element)
Inserts the specified element at the specified position index in this list. Throws
IndexOutOfBoundsException if the specified index is out of range (index < 0 || index >
size()).
2
boolean add(Object o)
Appends the specified element to the end of this list.
3
boolean addAll(Collection c)
Appends all of the elements in the specified collection to the end of this list, in the order that
they are returned by the specified collection's iterator. Throws NullPointerException, if the
specified collection is null.
4
boolean addAll(int index, Collection c)
Inserts all of the elements in the specified collection into this list, starting at the specified
position. Throws NullPointerException if the specified collection is null.
5
void clear()
Removes all of the elements from this list.
6
Object clone()
Returns a shallow copy of this ArrayList.
7
boolean contains(Object o)
Returns true if this list contains the specified element. More formally, returns true if and only
if this list contains at least one element e such that (o==null ? e==null : [Link](e)).
8
void ensureCapacity(int minCapacity)
Increases the capacity of this ArrayList instance, if necessary, to ensure that it can hold at
least the number of elements specified by the minimum capacity argument.
9
Object get(int index)
Returns the element at the specified position in this list. Throws
IndexOutOfBoundsException if the specified index is out of range (index < 0 || index >=
size()).
10
int indexOf(Object o)
Returns the index in this list of the first occurrence of the specified element, or -1 if the List
does not contain this element.
11
int lastIndexOf(Object o)
Returns the index in this list of the last occurrence of the specified element, or -1 if the list
does not contain this element.
12
Object remove(int index)
Removes the element at the specified position in this list. Throws
IndexOutOfBoundsException if the index out is of range (index < 0 || index >= size()).
13
protected void removeRange(int fromIndex, int toIndex)
Removes from this List all of the elements whose index is between fromIndex, inclusive and
toIndex, exclusive.
14
Object set(int index, Object element)
Replaces the element at the specified position in this list with the specified element. Throws
IndexOutOfBoundsException if the specified index is out of range (index < 0 || index >=
size()).
15
int size()
Returns the number of elements in this list.
16
Object[] toArray()
Returns an array containing all of the elements in this list in the correct order. Throws
NullPointerException if the specified array is null.
17
Object[] toArray(Object[] a)
Returns an array containing all of the elements in this list in the correct order; the runtime
type of the returned array is that of the specified array.
18
void trimToSize()
Trims the capacity of this ArrayList instance to be the list's current size.
Example
The following program illustrates several of the methods supported by ArrayList −
Live Demo
import [Link].*;
public class ArrayListDemo {
public static void main(String args[]) {
// create an array list
ArrayList al = new ArrayList();
[Link]("Initial size of al: " + [Link]());
// add elements to the array list
[Link]("C");
[Link]("A");
[Link]("E");
[Link]("B");
[Link]("D");
[Link]("F");
[Link](1, "A2");
[Link]("Size of al after additions: " +
[Link]());
// display the array list
[Link]("Contents of al: " + al);
// Remove elements from the array list
[Link]("F");
[Link](2);
[Link]("Size of al after deletions: " +
[Link]());
[Link]("Contents of al: " + al);
}
}
This will produce the following result −
Output
Initial size of al: 0
Size of al after additions: 7
Contents of al: [C, A2, A, E, B, D, F]
Size of al after deletions: 5
Contents of al: [C, A2, E, B, D]