У Java-масиві розміри завжди мають фіксовану довжину, але є спосіб, за допомогою якого можна динамічно збільшити розмір масиву під час виконання програми
Це найбільш "вживаний", а також бажаний спосіб зробити це -
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
У наведеному вище коді ми ініціалізуємо новий масив temp [] і надалі використовуємо цикл for для ініціалізації вмісту temp із вмістом вихідного масиву, тобто. stck []. А потім знову копіюємо його до оригіналу, даючи нам новий масив нового SIZE.
Без сумніву, він генерує накладні витрати на процесор завдяки повторній ініціалізації масиву, що використовує цикл, кілька разів. Але ви все одно можете використовувати та реалізовувати це у своєму коді. Для найкращої практики використовуйте "Зв'язаний список" замість масиву, якщо ви хочете, щоб дані зберігалися динамічно в пам'яті, різної довжини.
Ось приклад у режимі реального часу, заснований на динамічних стеках, щоб збільшити розмір масивів під час виконання
Назва файлу: 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();
}
}
Назва файлу: Exec.java
(з основним класом)
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);
}
}
Сподіваюся, це вирішить ваш запит.