Em Java Array, os tamanhos são sempre de comprimento fixo, mas há uma maneira de aumentar dinamicamente o tamanho do array no próprio tempo de execução
Esta é a maneira mais "usada" e preferida de fazer isso-
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
No código acima, estamos inicializando um novo array temp [] e, posteriormente, usando um loop for para inicializar o conteúdo do temp com o conteúdo do array original, ou seja. stck []. E, em seguida, copiá-lo novamente para o original, nos dando uma nova matriz de novo SIZE.
Sem dúvida, ele gera uma sobrecarga de CPU devido à reinicialização de um array usando o loop for repetidamente. Mas você ainda pode usar e implementar em seu código. Para a melhor prática, use "Linked List" em vez de Array, se quiser que os dados sejam armazenados dinamicamente na memória, de comprimento variável.
Aqui está um exemplo em tempo real baseado em pilhas dinâmicas para AUMENTAR O TAMANHO DA ARRAY em tempo de execução
Nome do arquivo: 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();
}
}
Nome do arquivo: Exec.java
(com a classe 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 isso resolva sua dúvida.