Java Stack.capacity()和Stack.size()之间的差异

Java Stack.capacity()和Stack.size()之间的差异,java,stack,Java,Stack,我目前正在使用堆栈类检查堆栈是否已满。但是,列表没有isFull()实现,因此我要求检查capacity()是否与size()相同。根据文档,size()。如果我理解正确,它们是一样的吗?如果是这样,我如何检查我的堆栈是否已满?Stack.size()-给出当前大小,即推送到堆栈的元素总数 stack.capacity()-给出当前容量,即数组大小,如10或20等。。。i、 例如,只要将10个元素推入堆栈,堆栈容量就会翻倍 内部Stack使用Vector并且Vector是一个动态增长的数组。 此

我目前正在使用
堆栈
类检查堆栈是否已满。但是,列表没有
isFull()
实现,因此我要求检查
capacity()
是否与
size()
相同。根据文档,
size()。如果我理解正确,它们是一样的吗?如果是这样,我如何检查我的
堆栈是否已满?

Stack.size()
-给出当前大小,即推送到堆栈的元素总数

stack.capacity()
-给出当前容量,即数组大小,如10或20等。。。i、 例如,只要将10个元素推入堆栈,堆栈容量就会翻倍

内部
Stack
使用
Vector
并且
Vector
是一个动态增长的数组。 此外,对于
堆栈
,您不能手动设置
电容增量
系数,而是堆栈本身在内部管理,您可以查看
堆栈。size()
-给出当前大小,即推送到堆栈的元素总数

stack.capacity()
-给出当前容量,即数组大小,如10或20等。。。i、 例如,只要将10个元素推入堆栈,堆栈容量就会翻倍

内部
Stack
使用
Vector
并且
Vector
是一个动态增长的数组。
此外,对于
堆栈
,您不能手动设置
电容增量
系数,而是堆栈本身在内部管理,您可以查看
大小
是堆栈中当前的元素数


capacity
是一个内部细节,它告诉您
向量中可以容纳的最大项目数。但是,这实际上并不相关,因为当达到容量时,它会自动扩展。

大小是堆栈中当前的元素数


capacity
是一个内部细节,它告诉您
向量中可以容纳的最大项目数。但是,这并不真正相关,因为当达到容量时,它将自动扩展。

堆栈扩展向量,您可以检查此类

int size()->返回此向量中的组件数。(向量中的最大元素数)

int capacity()->返回此向量的当前容量。(向量中的当前元素)

java.util.Vector中capacity()和size()的区别在于,capacity()返回它可以存储的元素数,而size()给出了方法调用时向量中的元素数。
向量的容量通常在构造函数本身中声明。

堆栈扩展向量,您可以检查此类

int size()->返回此向量中的组件数。(向量中的最大元素数)

int capacity()->返回此向量的当前容量。(向量中的当前元素)

java.util.Vector中capacity()和size()的区别在于,capacity()返回它可以存储的元素数,而size()给出了方法调用时向量中的元素数。
向量的容量通常在构造函数本身中声明。

Java中的
堆栈
数据结构表示后进先出(LIFO)对象堆栈。它扩展了类
Vector
,包含五个操作,例如

  • 流行音乐
  • 查看堆栈顶部的项目
  • 检查堆栈是否为空并且
  • 在堆栈中搜索项目
  • 当堆栈类如下所示时

    public class Stack extends Vector {
    }
    
    public E push(E item) {
        addElement(item);
    
        return item;
    }
    
    创建堆栈时,它不包含任何项。进入堆栈容量和大小

    Size
    -堆栈当前包含的元素数

    容量
    -它能够容纳的元件数量

    Push
    操作的实现如下

    public class Stack extends Vector {
    }
    
    public E push(E item) {
        addElement(item);
    
        return item;
    }
    
    addElement
    方法属于
    Vector
    类,它有助于将新元素插入
    Vector

    public synchronized void addElement(E obj) {
        modCount++;
        ensureCapacityHelper(elementCount + 1);
        elementData[elementCount++] = obj;
    }
    
    ensureCapacityHelper
    允许检查内部的
    向量是否能够添加新元素。如果没有足够的空间容纳新元素,
    向量将增长

     private void ensureCapacityHelper(int minCapacity) {
        // overflow-conscious code
        if (minCapacity - elementData.length > 0)
            grow(minCapacity);
    }
    
     /**
     * The maximum size of array to allocate.
     * Some VMs reserve some header words in an array.
     * Attempts to allocate larger arrays may result in
     * OutOfMemoryError: Requested array size exceeds VM limit
     */
    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
    
    private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                         capacityIncrement : oldCapacity);
        if (newCapacity - minCapacity < 0)
            newCapacity = minCapacity;
        if (newCapacity - MAX_ARRAY_SIZE > 0)
            newCapacity = hugeCapacity(minCapacity);
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
    
    private-void-reseaccacityhelper(int-minCapacity){
    //有溢出意识的代码
    如果(最小容量-elementData.length>0)
    增长(生产能力);
    }
    /**
    *要分配的最大数组大小。
    *有些虚拟机在数组中保留一些头字。
    *尝试分配较大的阵列可能会导致
    *OutOfMemoryError:请求的数组大小超过VM限制
    */
    私有静态最终int MAX_数组大小=Integer.MAX_值-8;
    私人空间增长(单位容量){
    //有溢出意识的代码
    int oldCapacity=elementData.length;
    int newCapacity=oldCapacity+((电容增量>0)?
    容量增加:旧容量);
    if(新容量-最小容量<0)
    新容量=最小容量;
    if(新容量-最大阵列大小>0)
    新容量=大容量(最小容量);
    elementData=Arrays.copyOf(elementData,newCapacity);
    }
    

    array.copyOf
    是一种本机方法,它使用
    newCapacity
    分配新的内存空间,并将数据从旧内存位置复制到新位置。

    Java中的
    堆栈
    数据结构表示后进先出(LIFO)对象堆栈。它扩展了类
    Vector
    ,包含五个操作,例如

  • 流行音乐
  • 查看堆栈顶部的项目
  • 检查堆栈是否为空并且
  • 在堆栈中搜索项目
  • 当堆栈类如下所示时

    public class Stack extends Vector {
    }
    
    public E push(E item) {
        addElement(item);
    
        return item;
    }
    
    创建堆栈时,它不包含任何项。到头来