Java 我应该使用什么数据结构来跟踪最近使用的项目?
我需要像有界队列这样的东西,在这里我只能插入10个元素。新元素应替代最后插入的元素应该只有n个不同的元素Java 我应该使用什么数据结构来跟踪最近使用的项目?,java,algorithm,data-structures,Java,Algorithm,Data Structures,我需要像有界队列这样的东西,在这里我只能插入10个元素。新元素应替代最后插入的元素应该只有n个不同的元素 顺便说一下,我正在寻找Java方面的建议。这是一个LRU算法的实现 这是队列数据结构的经典应用程序。大小为10的堆栈将跟踪您添加到其中的前10个元素,而大小为10的队列将跟踪最近添加的10个元素。如果您正在寻找“最近项目”列表,如您问题的标题所示,那么排队就是最好的选择 编辑:以下是一个示例,用于可视化目的: 假设您希望跟踪最近的4个项目,并按以下顺序访问8个项目: F、 O,R,T,
顺便说一下,我正在寻找Java方面的建议。这是一个LRU算法的实现
access item queue stack
1 F [ F . . . ] [ . . . F ]
2 O [ O F . . ] [ . . O F ]
3 R [ R O F . ] [ . R O F ]
4 T [ T R O F ] [ T R O F ]
5 Y [ Y T R O ] [ Y R O F ]
6 T [ T Y T R ] [ T R O F ]
7 W [ W T Y T ] [ W R O F ]
8 O [ O W T Y ] [ O R O F ]
从堆栈中删除顶部元素将删除最近添加的项,而不是最旧的项
从队列中删除一个元素将删除最旧的项目,因此您的队列将自动保存最新的项目
编辑:多亏了,这里有一些关于。一个队列的文档,该队列由一种跟踪对同一元素的多次访问的机制支持……OP说:新元素应该覆盖最后插入的元素。这是后进先出。他不想看到最近的10个,除非他的问题措辞不正确。@Kevin Crowell:我想是这样的。他的问题的标题提到了一个“最近的项目”列表,所以我想他用“最后一个”来表示“最老的”。@Sasha:你必须自己写,但这并不太难。我为一个例子添加了一个链接,Java确实有一个队列。队列接口自1.5(2004)起就存在于Java中,LinkedList和其他集合实现了它。最后一个是最近的。你的问题不清楚。您希望新元素替换最旧的元素还是最新的元素?你是在看使用(访问)还是插入?@Rich B:这是故意的失误。如果允许GIYF问题,那么这些答案也应该被允许。然而,这次失误的原因是,OP实际上发现了这一点。你不希望常见问题被重复一次又一次,是吗?