【发布时间】:2025-11-26 12:35:02
【问题描述】:
我有一个使用 Stack 数据结构的大型代码库(由我编写)。这是为了方便起见,我有时将其用作堆栈或向量/列表。
然而,经过性能评估,我们决定不为同步安全支付额外费用。我现在需要用非同步的结构替换这个结构(代码中多次提到)。
我很高兴地发现 Apache 集合包含一个 ArrayStack,这正是我想要的(与 Java 堆栈相同,但非同步)。但是,这没有像现代 Java 5 代码那样的泛型(这是我使用的)。而且我不会将我的代码转换成 Java 1.4 的样子
那么是否有任何其他符合 Java 5 的替代 Java Stack 或者我需要自己编写?
更新:
我将 LinkedList 与经过调整的“pop”/“push”方法一起使用。
【问题讨论】:
-
就像 Jon Skeet 所说,ArrayDeque 是要走的路。顺便说一句,ArrayStack 在与 Stack 相同的意义上被破坏了,因为 ArrayStack 继承自 ArrayList,这是一个不好使用继承的好例子;-)。
-
顺便说一句,如果您使用的是现代 HotSpot JVM,它很有可能已经为您优化了锁。例如,它已经使从
StringBuffer(同步)到StringBuilder(非同步)的转换在很大程度上是不必要的(尽管它仍然有它的位置)。 -
@Adam 是的,我知道,但请尝试向客户解释!
-
@kazanaki:很公平。顺便问一下,你现在必须遵守的“绩效评估”是谁进行的?咨询公司?您是否知道他们是否衡量现有应用程序的性能以指导他们的建议?
-
@Adam 审查由客户执行。不要问...
标签: java data-structures stack