java - ArrayList 初始大小不起作用

标签 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在第二个堆栈中而不更改其顶部,但是当我尝试此操作时 ArrayList在我的 stack2 中,未使用 stack1.getTop() 进行初始化。我已经检查了构造函数中的变量大小,它有一个值。为什么会出错?

最佳答案

正如其名称所示,

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

当您使用“大小”初始化 ArrayList 时,这实际上是其初始默认容量。它将任何内容初始化到数组中。创建后 ArrayList 仍然是空的;您仍然需要实际向 ArrayList 添加值。

关于java - ArrayList 初始大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259660/

相关文章:

haskell - 使用堆栈实现撤消和重做功能。如何编辑堆栈而无需在 Haskell 中重新创建它

java - 如何从输入文本文件中获取行和列的大小?

java - 这真的是动态多态吗?当我们使用 new 操作符实例化一个类时,编译器可以获得哪些信息?

javascript - 像 JavaScript 中的 ArrayList 一样管理数组 : Deleting an element and closing the gap created

java - 在 Java 中警告克隆 ArrayList

java - 深度优先搜索多个解决方案

Java 收集程序显示错误 - 堆栈是抽象的,无法实例化

Java:如何创建异常哈希表?

java - 单击以获得 xText 编辑器支持

java - 为什么方法不是静态的却说它是静态的?