In Java le dimensioni dell'array sono sempre di lunghezza fissa, ma esiste un modo in cui puoi aumentare dinamicamente la dimensione dell'array durante il runtime stesso
Questo è il modo più "usato" e preferito per farlo-
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
Nel codice sopra stiamo inizializzando un nuovo array temp [], e ulteriormente usando un ciclo for per inizializzare il contenuto del temp con il contenuto dell'array originale, es. Stck []. E poi di nuovo copiandolo di nuovo a quello originale, dandoci una nuova gamma di nuove TAGLIE.
Senza dubbio genera un sovraccarico della CPU dovuto alla reinizializzazione di un array utilizzando ripetutamente il ciclo for. Ma puoi ancora usarlo e implementarlo nel tuo codice. Per la migliore pratica, utilizzare "Elenco collegato" invece di Array, se si desidera che i dati vengano archiviati dinamicamente nella memoria, di lunghezza variabile.
Ecco un esempio in tempo reale basato su stack dinamici per AUMENTARE LA DIMENSIONE DELL'ARRAY in fase di esecuzione
Nome file: 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 file: Exec.java
(con la classe principale)
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);
}
}
Spero che questo risolva la tua domanda.