我们知道ArrayList使用动态数组来存储数据。 LinkedList使用链表存储数据。因此,对于这两种情况,我们都知道在添加或删除新元素时它是如何工作的(在内存方面)。现在类似地,如何在Java中为堆栈或队列分配内存。当我在堆栈或队列中添加元素或从中删除元素时,在内存级别会发生什么情况。
yifei86935 回答:如何在Java
嗯,Queue
是一个接口,因此无需多说。有很多实现和不同的行为。无论如何,例如ArrayBlockingQueue
的内存分配类似于ArrayList
。无论如何,有两个主要组(有界和无界),但这实际上取决于您选择的实现。
关于Stack
,内存分配也与ArrayList
非常相似,因为它是Vector
的子类,并且由数组支持。
java.util.Stack
是java.util.Vector
的子类,它只是一个数组。现在java.util.Queue
是一个接口,具有各种实现,分为两个主要类别:
- 有界-由固定大小的基础数组支持。一个常见的例子是
ArrayBlockingQueue
- 无界-由链表支持,因此从理论上讲是无限的。一个常见的例子是
LinkedBlockingQueue