ArrayList初始大小不起作用

时间:2016-05-16 17:22:35

标签: java arraylist stack

我创建了一个名为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而不更改其顶部,但是当我尝试这个时,我的stack2中的ArrayList不会使用stack1.getTop()进行初始化。我检查了构造函数中的变量大小,它有一个值。为什么这是错的?

2 个答案:

答案 0 :(得分:2)

正如其名称所示,

ArrayList支持一个数组。数组是固定大小的;当ArrayList接近数组的容量时,它会调整大小 - 它会创建一个新数组,复制所有内容,然后抛弃旧数组。

当您使用&#34;尺寸&#34;初始化ArrayList时,它实际上是其初始默认容量。它将任何内容初始化为数组。创建后ArrayList仍为空;您仍需要实际向ArrayList添加值。

答案 1 :(得分:0)

ArrayList(n)构造函数的int参数仅用于设置列表的初始容量。它的大小仍为零,直到你把东西放进去。初始容量在内部使用,以便列表不必重新分配更多空间,直到您在其中放置超过n个项目。