Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何为堆栈和队列分配内存_Java_Data Structures_Collections - Fatal编程技术网

java中如何为堆栈和队列分配内存

java中如何为堆栈和队列分配内存,java,data-structures,collections,Java,Data Structures,Collections,我们知道ArrayList使用动态数组存储数据。LinkedList使用链表存储数据。因此,对于这两种情况,我们都知道在添加或删除新元素(内存方面)时它是如何工作的。现在,类似地,在java中如何为堆栈或队列分配内存。在内存级别,当我向堆栈或队列添加/删除元素时会发生什么情况。java.util.Stack是java.util.Vector的子类,它只是一个数组。现在,java.util.Queue是一个接口,有多种实现,分为两大类: 有界-由固定大小的基础数组支持。一个常见的例子是ArrayB

我们知道ArrayList使用动态数组存储数据。LinkedList使用链表存储数据。因此,对于这两种情况,我们都知道在添加或删除新元素(内存方面)时它是如何工作的。现在,类似地,在java中如何为堆栈或队列分配内存。在内存级别,当我向堆栈或队列添加/删除元素时会发生什么情况。

java.util.Stack
java.util.Vector
的子类,它只是一个数组。现在,
java.util.Queue
是一个接口,有多种实现,分为两大类:

  • 有界-由固定大小的基础数组支持。一个常见的例子是
    ArrayBlockingQueue
  • 无界-由链表支持,因此理论上是无限的。一个常见的例子是
    LinkedBlockingQueue

  • 请检查文档和

    好吧,
    队列
    是一个接口,所以没有什么好说的。有很多实现和不同的行为。无论如何,例如,
    ArrayBlockingQueue
    的内存分配类似于
    ArrayList
    。无论如何,有两个主要组(有界和无界),但这实际上取决于您选择的实现

    关于
    Stack
    ,内存分配也与
    ArrayList
    非常相似,因为它是
    Vector
    的一个子类,由数组支持