En Java, los tamaños de matriz son siempre de longitud fija, pero hay una forma en la que puede aumentar dinámicamente el tamaño de la matriz en tiempo de ejecución.
Esta es la forma más "utilizada" y preferida de hacerlo.
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
En el código anterior estamos inicializando una nueva matriz temp [], y además usamos un bucle for para inicializar el contenido de la temp con el contenido de la matriz original, es decir. stck []. Y luego copiarlo nuevamente al original, lo que nos da una nueva matriz de TAMAÑO nuevo.
Sin duda, genera una sobrecarga de CPU debido a la reinicialización de una matriz usando el bucle for repetidamente. Pero aún puede usarlo e implementarlo en su código. Para las mejores prácticas, use "Lista enlazada" en lugar de Array, si desea que los datos se almacenen dinámicamente en la memoria, de longitud variable.
Aquí hay un ejemplo en tiempo real basado en pilas dinámicas para AUMENTAR EL TAMAÑO DE LA ARRAY en tiempo de ejecución
Nombre de archivo: DStack.java
public class DStack {
private int stck[];
int tos;
void Init_Stck(int size) {
stck=new int[size];
tos=-1;
}
int Change_Stck(int size){
return stck[size];
}
public void push(int item){
if(tos==stck.length-1){
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
stck[++tos]=item;
}
else
stck[++tos]=item;
}
public int pop(){
if(tos<0){
System.out.println("Stack Underflow");
return 0;
}
else return stck[tos--];
}
public void display(){
for(int x=0;x<stck.length;x++){
System.out.print(stck[x]+" ");
}
System.out.println();
}
}
Nombre de archivo: Exec.java
(con la clase principal)
import java.util.*;
public class Exec {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int option,item,i=1;
DStack obj=new DStack();
obj.Init_Stck(1);
do{
System.out.println();
System.out.println("--MENU--");
System.out.println("1. Push a Value in The Stack");
System.out.println("2. Pop a Value from the Stack");
System.out.println("3. Display Stack");
System.out.println("4. Exit");
option=in.nextInt();
switch(option){
case 1:
System.out.println("Enter the Value to be Pushed");
item=in.nextInt();
obj.push(item);
break;
case 2:
System.out.println("Popped Item: "+obj.pop());
obj.Change_Stck(obj.tos);
break;
case 3:
System.out.println("Displaying...");
obj.display();
break;
case 4:
System.out.println("Exiting...");
i=0;
break;
default:
System.out.println("Enter a Valid Value");
}
}while(i==1);
}
}
Espero que esto resuelva su consulta.