我创建了一个名为 StackOfBook
的堆栈类。我需要 2 个堆栈,因此我在主类上创建它:
StackOfBook stack1 = new StackOfBook();
while (true) {
long number = sc.nextLong();
if (number == -1) {
break;
}
stack1.push(number);
}
StackOfBook stack2 = new StackOfBook(stack1.getTop());
这是我的堆栈类:
private int top = 0;
private ArrayList<Long> arrBook;
public StackOfBook(){
arrBook = new ArrayList<Long>();
}
public StackOfBook(int size){
arrBook= new arrBook<Long>(size);
}
public int getTop() {
return this.top;
}
我尝试初始化ArrayList
在第二个堆栈中而不更改其顶部,但是当我尝试此操作时 ArrayList
在我的 stack2 中,未使用 stack1.getTop()
进行初始化。我已经检查了构造函数中的变量大小,它有一个值。为什么会出错?
最佳答案
正如其名称所示,
ArrayList
由数组支持。数组是固定大小的;当 ArrayList 接近数组的容量时,它会调整数组的大小 - 它会创建一个新数组,复制所有内容,然后放弃旧数组。
当您使用“大小”初始化 ArrayList
时,这实际上是其初始默认容量。它不将任何内容初始化到数组中。创建后 ArrayList
仍然是空的;您仍然需要实际向 ArrayList 添加值。
关于java - ArrayList 初始大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259660/