Stack中存储了多少个元素?

问题描述:

是否存在可以存储在堆栈中的最大元素数?是系统可用存储量的唯一限制吗?Stack中存储了多少个元素?

为了清楚起见,我指的是java.util.Stack

如果您要约java.util.Stack,那么限制为Integer.MAX_VALUE约为20亿。但是,如果让它自然增长,那么如果添加超过13亿(10 * 2^28),则会发生异常,因为它会尝试将底层阵列增长到大于允许的大小。

恕我直言堆栈是一个遗留类在Java 1.2(1998)取代我不建议你使用它。

+0

感谢您的信息。我是CS学生;由于课程的方向,我不能避免它们。出于好奇,什么取代了堆栈? – somehume 2011-04-19 11:59:42

+2

AFAIK,'java.util.ArrayList',它是一个包装数组并实现标准接口(如List)的非同步版本。早期的集合不是为实现接口而设计的,这就是为什么它们有多个方法来实现兼容性。 – 2011-04-19 12:11:53

+1

@DJClayworth,ArrayList有'add()'和'remove(size() - 1)',它们做同样的事情。 – 2011-04-19 19:49:08

存储能力通常受限于可用内存,堆栈数据结构的堆内存或调用堆栈的堆栈内存。

+0

...最大可用内存,或Integer.MAX项目数量? – Chii 2011-04-19 11:43:05

+0

@Chii它取决于栈的实现,它也可以使用长索引。我想说你可能会在达到最大索引范围之前遇到内存限制。 – Thomas 2011-04-19 11:45:27