Java 如果将项目推入堆栈,但初始容量已经满足,会发生什么情况?

Java 如果将项目推入堆栈,但初始容量已经满足,会发生什么情况?,java,stack,Java,Stack,如果您尝试这些执行,会发生什么情况: Stack initial capacity: 5 Object[0] = 'H' Object[1] = 'a' Object[2] = 'p' Object[3] = 'p' Object[4] = 'y' 使用数组的堆栈实现是否也有peek方法 另外,我没有电脑,我只是在电话里问这个问题。我刚刚读了一本书,这是一个问题…取决于堆栈是如何实现的。它将导致堆栈溢出,如何处理也取决于如何实现堆栈 理想情况下,堆栈实现应该知道何时达到满容量。当堆栈已满

如果您尝试这些执行,会发生什么情况:

Stack initial capacity: 5
Object[0] = 'H'
Object[1] = 'a'
Object[2] = 'p' 
Object[3] = 'p' 
Object[4] = 'y' 
使用数组的堆栈实现是否也有peek方法


另外,我没有电脑,我只是在电话里问这个问题。我刚刚读了一本书,这是一个问题…

取决于堆栈是如何实现的。它将导致堆栈溢出,如何处理也取决于如何实现堆栈

理想情况下,堆栈实现应该知道何时达到满容量。当堆栈已满且尝试推送时,它通常会引发异常,而根本不会尝试添加元素。然后由调用方捕获这些异常并适当处理它们

简而言之:一个好的堆栈实现将提供错误检查,而不会使整个程序崩溃,一个写得不好的程序将崩溃。这是使用您提到的数组,它可以有peek()或top()方法


编辑:作为对更改为ArrayList实现的响应,您在技术上不能溢出,因为ArrayList将动态增长。但假设您在内部设置了软容量,堆栈的增长量不允许超过100个元素。然后您的实现将溢出,这不是因为ArrayList已满,而是因为已达到软容量。

初始容量是堆栈内部数组的起始大小。一旦满足初始容量,大多数实现都会调整基础阵列的大小。

自己试试,然后让我们知道发生了什么。你可以试着制作一个程序来测试这个。对不起,我没有访问计算机的权限,我正在用手机读一本书,这时出现了这个问题……你是在问关于实现还是其他实现?关于使用数组作为底层数据结构的堆栈的实现。注意:一些实现可能根本无法调整基础阵列的大小,但如果它不可调整大小,则将其称为“初始”容量会很奇怪。
s.push('i');
s.push('s');