是否存在未同步的Java Stack的替代品?

kaz*_*aki 8 java stack data-structures

我有一个使用Stack数据结构的大型代码库(由我编写).这是为了方便使用,我有时使用它作为Stack或其他时间使用Vector/List.

在进行了性能评估之后,我们决定不再为同步安全支付额外费用.我现在需要用非同步的结构替换这个结构(在代码中很多次提到它).

我很高兴发现Apache集合包含一个ArrayStack,这正是我想要的(与Java堆栈相同但非同步).然而,这不是现代Java 5代码(这是我使用的)的泛型.而且我不会将我的代码转换为Java 1.4

那么Java Stack是否还有其他Java 5兼容的替代品,或者我需要自己编写吗?

更新:

我使用LinkedList和调整的"pop"/"push"方法.

Jon*_*eet 8

当你说"符合Java 5"时 - ArrayDeque<T>直到Java 6才到达,但听起来就像你所追求的那样(Deque<T>当然使用适当的接口).您可以在需要时将其用作堆栈,或者将其用作更合适的队列......基本上只需调用适当的方法即可.

  • 在Java 5.0中,您可以使用`LinkedList <E>`使用`add(0,E)`进行推送,使用`remove(0)`进行pop. (4认同)
  • @kazanaki,你可以使用List <E>作为界面,因为它可以用于任何列表.但是,要使ArrayList <E>高效工作,您必须从最后添加/删除.(这比使用LinkedList更快但更丑陋)`添加(e)`用于push和`remove(list.size() - 1)`用于pop. (3认同)