Java 应用程序引擎中可排序队列的设计模式

Java 应用程序引擎中可排序队列的设计模式,java,google-app-engine,design-patterns,Java,Google App Engine,Design Patterns,我正在尝试在应用程序引擎中存储可排序队列。用户可以创建自定义订单中的可排序as。思考这个问题的最简单方法是列出一系列歌曲。每5分钟从列表中选择一首新歌并播放。但是用户可以添加新歌曲并调整列表的播放顺序。播放歌曲后,它将从列表中删除。如何为列表中的大量歌曲执行此操作 我想添加一个排序字段,但每当播放一首歌时,我都需要更新整个列表。然后我想保持一个浮动排序顺序,只跟踪最高和最低的条目,但如果同时添加许多歌曲,这似乎会导致麻烦 任何关于设计模式的信息,我都非常感谢。还有,我是否可以使用歌曲的唯一键值来

我正在尝试在应用程序引擎中存储可排序队列。用户可以创建自定义订单中的可排序as。思考这个问题的最简单方法是列出一系列歌曲。每5分钟从列表中选择一首新歌并播放。但是用户可以添加新歌曲并调整列表的播放顺序。播放歌曲后,它将从列表中删除。如何为列表中的大量歌曲执行此操作

我想添加一个排序字段,但每当播放一首歌时,我都需要更新整个列表。然后我想保持一个浮动排序顺序,只跟踪最高和最低的条目,但如果同时添加许多歌曲,这似乎会导致麻烦


任何关于设计模式的信息,我都非常感谢。还有,我是否可以使用歌曲的唯一键值来排列我的列表。我是否保证所有新ID都会比之前创建的ID大,或者有什么方法可以保证这一点

我认为您只需要一个有序队列,您可以任意重新排列或添加/删除其中的元素。如果是这样,您可以使用链表,它实际上是一种数据结构,而不是一种设计模式


例如,您可以使用
remove(int index)
删除列表中任何位置的歌曲,同时保留排序。同样,您可以使用
add(int index,Object element)
在列表中的任何索引处插入歌曲,同时保留顺序。这里还有其他实用方法,但这似乎是实现您所需功能的基础。

我仍然不清楚您想要做什么。。。在我看来,你的问题更多的是关于数据结构,而不是设计模式。有什么原因不能使用类似于a的东西吗?我需要将其存储在数据存储中,而不是内存中。多人将在很长一段时间内编辑列表并进行更改。这在一个请求中起作用,但我尝试将其存储在数据存储中,而不是内存中。没有任何东西可以阻止您持久化链接列表。这是一个可以在任何地方实现的方法,但是为了使用这个列表,我需要把我所有的值都放到内存中。这对于非常大的100000多个实体的列表是无效的,尤其是当我只关心第一个实体以及最后一个实体的位置时。不,你不需要。链表的全部要点是每个元素只指向下一个元素。指针的值可以是任何值。例如,它可以是数据库表中元素的主键。列表中的第一个元素是指针值为null的元素,最后一个元素是指针值不指向它的元素。