Home >Java >javaTutorial >Dynamic Array in Java
Dynamic Array in Java means either stretched or shrank the size of the array depending upon user requirements. While an element is removed from an array, the array size must be shrunken, and if an element is added to an array, then the array size becomes stretch. Arrays are used to store homogenous elements means the same type of elements can be stored at a time.
Example: We can store integer numbers, float numbers, double numbers, strings, characters, Objects, etc. but at a time and any specific type only.
Start Your Free Software Development Course
Web development, programming languages, Software testing & others
An array can be declared in 3 ways:
1. Array[]
Example:
int Array[]={1,2,4};
2. [] Array
Example:
int[] Array ={1,2,4};
3. []A
Example:
int []Array ={1,2,4};
Array elements are iterated by using:
Is there any other alternative way to make the array become dynamic?
What is the advantage over the normal dynamic array to collections Arraylist?
Syntax:
class DynamicArray { addingElements() { //custom logic } addingElementsAtIndex(int index, int element) { //custom logic } removingElements() { //custom logic } removingElementsAtIndex(int index, int element) { //custom logic } increasingSize() { //custom logic } decreasingSize() { //custom logic } printArrayElements() { //custom logic } . . . }
Syntax:
class ArrayListLogic { List<Generic Type> list=new ArrayList<Generic Type>(); list.add(); list.remove(index,element); . . . }
Given below are the examples of Dynamic Array in Java:
Adding the elements to the array and increasing size and capacity dynamically.
Code:
package com.dynamicarray; import java.util.Arrays; public class DynamicArray { // declaring an array int myArray[]; // stores the present size of the array int sizeOfMyArray; // stores total capacity of an array int arrayCapacity; // initializing array, size and capacity public DynamicArray() { myArray = new int[2]; sizeOfMyArray = 0; arrayCapacity = 2; } // method for adding elements public void addElementsToArray(int element) { // makes the capacity double if all the array elements filled if (sizeOfMyArray == arrayCapacity) { increaseCapacity(2); } myArray[sizeOfMyArray] = element; sizeOfMyArray++; } // method for adding elements to specific position public void addElementAtPosition(int position, int value) { // makes the capacity double if all the array elements filled if (sizeOfMyArray == arrayCapacity) { increaseCapacity(2); } // shifting array elements for (int p = sizeOfMyArray - 1; p >= position; p--) { myArray[p + 1] = myArray[p]; } // adding the element at specific position myArray[position] = value; sizeOfMyArray++; } // method for getting the element from specific position public int getElementAtposition(int position) { return myArray[position]; } // method for increasing capacity if all the elements in an array filled public void increaseCapacity(int minimumCapacity) { int temp[] = new int[arrayCapacity * minimumCapacity]; for (int p = 0; p < arrayCapacity; p++) { temp[p] = myArray[p]; } myArray = temp; arrayCapacity = arrayCapacity * minimumCapacity; } // method for array current size public int displaySize() { return sizeOfMyArray; } // method for array total capacity public int displayCapacity() { return arrayCapacity; } // method for display all elements public void displayArrayElements() { System.out.println("elements in array are :" + Arrays.toString(myArray)); } public static void main(String[] args) { DynamicArray array = new DynamicArray(); System.out.println("==================================================================="); System.out.println("Inital array size " + array.displaySize() + " and initial capacity " + array.displayCapacity()); System.out.println("==================================================================="); // adding elements at index 0 and 1 array.addElementsToArray(10);//line 1 array.addElementsToArray(20);//line 2 System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.addElementsToArray(30); //line 3 System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); //line 4 // adding element at index 1 array.addElementAtPosition(1, 50); System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); // adding element at index 2 array.addElementAtPosition(2, 60); System.out.println("Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); } }
Output:
Explanation:
Code:
package com.dynamicarray; import java.util.Arrays; public class DynamicArray { // declaring an array int myArray[]; // stores the present size of the array int sizeOfMyArray; // stores total capacity of an array int arrayCapacity; // initializing array, size and capacity public DynamicArray() { myArray = new int[2]; sizeOfMyArray = 0; arrayCapacity = 2; } // method for adding elements public void addElementsToArray(int element) { // makes the capacity double if all the array elements filled if (sizeOfMyArray == arrayCapacity) { increaseCapacity(2); } myArray[sizeOfMyArray] = element; sizeOfMyArray++; } // method for adding elements to specific position public void addElementAtPosition(int position, int value) { // makes the capacity double if all the array elements filled if (sizeOfMyArray == arrayCapacity) { increaseCapacity(2); } // shifting array elements for (int p = sizeOfMyArray - 1; p >= position; p--) { myArray[p + 1] = myArray[p]; } // adding the element at specific position myArray[position] = value; sizeOfMyArray++; } // method for getting the element from specific position public int getElementAtposition(int position) { return myArray[position]; } // method for removing elements public void removeAtPosition(int position) { if (position >= sizeOfMyArray || position < 0) { System.out.println("Opps!No elements found " + position + " position"); } else { for (int p = position; p < sizeOfMyArray - 1; p++) { myArray[p] = myArray[p + 1]; } myArray[sizeOfMyArray - 1] = 0; sizeOfMyArray--; } } // method for increasing capacity if all the elements in an array filled public void increaseCapacity(int minimumCapacity) { int temp[] = new int[arrayCapacity * minimumCapacity]; for (int p = 0; p < arrayCapacity; p++) { temp[p] = myArray[p]; } myArray = temp; arrayCapacity = arrayCapacity * minimumCapacity; } // method for make an array size to initial size public void makeInitialSize() { System.out.println("Making an array to initial size"); int temp[] = new int[sizeOfMyArray]; for (int q = 0; q < sizeOfMyArray; q++) { temp[q] = myArray[q]; } myArray = temp; arrayCapacity = myArray.length; } // method for array current size public int displaySize() { return sizeOfMyArray; } // method for array total capacity public int displayCapacity() { return arrayCapacity; } // method for display all elements public void displayArrayElements() { System.out.println("elements in array are :" + Arrays.toString(myArray)); } public static void main(String[] args) { DynamicArray array = new DynamicArray(); System.out.println("==================================================================="); System.out.println("Inital array size " + array.sizeOfMyArray + " and initial capacity " + array.arrayCapacity); System.out.println("==================================================================="); array.addElementsToArray(10); array.addElementsToArray(20); array.addElementsToArray(30); array.addElementsToArray(40); array.displayArrayElements(); array.removeAtPosition(2); System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.removeAtPosition(2); System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.removeAtPosition(1); System.out.println("Size after Remove Operation=>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.removeAtPosition(2); System.out.println("Size after Remove Operation =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.removeAtPosition(1); System.out.println("Size after Remove Operation =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); // Make the array to initial size array.makeInitialSize(); System.out.println(" After trimming Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.addElementsToArray(-5); System.out.println("After trimming Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); array.addElementsToArray(-6); System.out.println("After trimming Size of myArray =>" + array.displaySize() + " and Capacity :" + array.displayCapacity()); array.displayArrayElements(); } }
Output:
Dynamic array with ArrayList.
Code:
package com.dynamicarray; import java.util.ArrayList; import java.util.List; public class ArrayListDynamic { public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); list.add(10); list.add(20); list.add(30); list.add(40); System.out.println("Adding the elements ArrayList =>"+list); System.out.println("Adding the elements ArrayList size =>"+list.size()); /*Array List capacity formula newCapacity = (oldCapacity * 3/2) + 1*/ list.add(4, 50); System.out.println("After adding the element at specific index =>"+list+" and size "+list.size()); list.remove(4); list.remove(3); System.out.println("After removing the elements =>"+list+" and size "+list.size()); } }
Output:
In a normal dynamic array, the implementation developer must write custom logic, whereas, in collection ArrayList, all predefined methods are available, so no need to write custom logic.
The above is the detailed content of Dynamic Array in Java. For more information, please follow other related articles on the PHP Chinese website!