2012-08-08 65 views
0

你可以建议哪些数据结构在下列情况下使用:类似的数据结构栈

我用Java

我需要SMTH像一个堆栈 - 先出那么最后,但固定堆栈大小,例如只有5个元素可以放在里面,当一个新元素被放到堆栈中时,堆栈底部的元素应该被丢弃,并且我也想通过索引获取元素,这是最新的元素的索引为0,最旧的元素的索引为4.

在Java中是否有适当的smth?

我试过使用java.util.Stack,但例如如果我将大小设置为3并尝试添加4个元素,它们全部都添加到堆栈中。

+1

这里的环形缓冲区听起来很完美,假设你保持它的固定大小。 – templatetypedef 2012-08-08 04:48:56

回答

0

Java有ArrayDeque,这基本上是一个可增长的环形缓冲区。如果你想保持它的大小不变,只需在推动前检查尺寸,如果尺寸太大,则弹出底部值。

+0

Thx指向正确的方向,基本上堆栈是好的,我只是检查是否达到最大尺寸我删除位置0的元素,并推新元素。 – 2012-08-08 04:58:56

+0

使用数组deque更快,因为对于基于标准数组列表的堆栈,移除底层元素是O(1)而不是O(n)。 – Antimony 2012-08-08 05:21:33