В 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 []. И затем снова копируем его обратно в исходный, давая нам новый массив нового РАЗМЕРА.
Нет сомнений, что он генерирует нагрузку на ЦП из-за повторной инициализации массива, использующего цикл for. Но вы все равно можете использовать и реализовать его в своем коде.
Для лучшей практики используйте «Связанный список» вместо «Массив», если вы хотите, чтобы данные динамически сохранялись в памяти переменной длины.
Вот пример в реальном времени, основанный на динамических стеках, для увеличения размера массива во время выполнения
Имя файла: 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);
}
}
Надеюсь, это решит ваш запрос.