java - java.util.Stack.clear() 的性能

标签 java stack

嗨,我想知道 java.util.Stack.clear() 的性能复杂度是多少。

如果它只取消引用顶部 pf 堆栈,那么性能将为 O(1),

如果它删除每个节点,那么性能将是 O(n)

哪个是正确的?

最佳答案

根据消息来源 - http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/util/Vector.java#Vector.clear%28%29 - 对我来说看起来是 O(n)(加上需要完成的 GC)。

 public void clear() {
     removeAllElements();
 }

 public synchronized void removeAllElements() {
     modCount++;
     // Let gc do its work
     for (int i = 0; i < elementCount; i++)
         elementData[i] = null;

     elementCount = 0;
 }

关于java - java.util.Stack.clear() 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21246637/

相关文章:

c++ - 初始化指向模板的指针时未解析的外部符号

C++ 堆栈使用模板化链表 - 内存泄漏

c - 将指向堆栈分配数组的指针传递给函数

java - Android WebView Java-Javascript 桥接器

java - 更新一些 SDK 工具后 Android 给我很多错误

java - RAD 6.1 + 所有项目的系统属性

jquery - 将 "this"添加到 jQuery 中 "each"的父堆栈

java - Thread.yield() 仍然是跨平台雷区?

java - 为什么接口(interface)中的所有字段都是隐式静态和最终的?

c - 使用递归插入和删除堆栈 ADT 的元素